当前位置: 首页 > news >正文

C++基础语法/C++语言新特性

C++基础(一)

静态数据成员

不同对象同一空间,静态成员变量(static修饰)​​不属于任何对象​​,而是​​直接存储在程序的静态存储区(全局数据区)​

class A{
static int z;
public:
void Setxy(int a,int b);
}
A a1,a2;

 

使用注意:

1.编译时就为类是数据成员分配静态存储区空间

2.在文件作用域中作一次且仅能一次定义性说明

int MyClass::staticMember = 0;//需要声明静态成员变量

3.public权限时,才可能在类外进行访问

4.一般在静态数据成员定义行说明时指定初值

静态成员函数

在多线程或跨模块场景中安全地共享计数:

1.类外定义不加static

2.不能定义为virtual

3.将静态成员函数定义为内联 inline

4.静态函数无法直接访问非静态成员(如 statusLabel),需通过实例传递

普通成员函数​​(非静态成员函数)和​​静态成员函数​​访问区别:
class MyWindow : public QMainWindow {Q_OBJECTpublic:// 静态成员变量:全局登录状态(所有窗口实例共享)static bool isLoggedIn; // 构造函数explicit MyWindow(QWidget *parent = nullptr);// 普通成员函数:通过实例修改静态变量(需对象调用)void updateLoginStatusInstance(bool status);// 静态成员函数:直接修改静态变量(类名调用)static void updateLoginStatusStatic(bool status);
// 普通成员函数:通过实例修改静态变量
void MyWindow::updateLoginStatusInstance(bool status) {isLoggedIn = status;  // 直接修改静态变量(需注意:所有实例共享,可能被其他实例覆盖)statusLabel->setText(QString("登录状态:%1(通过实例修改)").arg(status ? "已登录" : "未登录"));qDebug() << "普通函数修改后,静态变量值:" << isLoggedIn;
}// 静态成员函数:直接修改静态变量
void MyWindow::updateLoginStatusStatic(bool status) {isLoggedIn = status;  // 直接修改静态变量(类级别操作)// 注意:静态函数无法直接访问非静态成员(如 statusLabel),需通过实例传递qDebug() << "静态函数修改后,静态变量值:" << isLoggedIn;
}

构造函数

1.编译器显示定义了一个类的构造函数,编译器就不产生缺省构造函数

2.不存在没有构造函数的对象

3.缺省构造函数只有一个

4.定义的类要说明对象,构造函数必须是公有成员函数;定义的类仅用于派生,则可将构造函数定义为保护构造函数。

5.对于全局对象是在main之前调用

析构函数

1.释放对象成员数据成员用new运算符分配的动态对象时,必须显示定义析构函数,并delete。

2.没有,编译器会自定义一个

拷贝构造函数

1.如果没有定义拷贝构造函数,编译器会自定义一个

http://www.dtcms.com/a/283506.html

相关文章:

  • 嵌入式Linux内存管理子系统控制与实现
  • 视觉SLAM:使用 Sophus 的 SE3 类,自己设计 g2o 的节点与边,实现 PnP 和 ICP 的优化
  • 交易日历接口api,股票/板块日,周,月K线行情接口api,情绪周期api,Level2实时数据api
  • 【python】sys.executable、sys.argv、Path(__file__) 在PyInstaller打包前后的区别
  • 《Java语言程序设计》1.2.3复习题
  • PHP 社区正在讨论变更许可证,预计 PHP 9.0 版本将完全生效
  • LangChain面试内容整理-知识点20:LangChain Expression Language (LCEL)
  • SAP学习笔记 - 开发46 - RAP开发 Managed App Metadata Extension 2 - Booking_M,BookSuppl_M
  • 2.PCL 对于点云的读写
  • 手写和印刷体混合怎么识别
  • ESP32——基于idf框架开发GPIO设备
  • 高性能架构模式——高性能NoSQL
  • 如何打造全场景数字化OA办公平台?
  • 网络(数据库1)
  • oracle2kingbase的字段长度问题
  • STM32外设介绍4(ADC)
  • Windows11怎样禁止应用开机启动
  • 评估遥感云雾浓度的无参化指标(适用于其它合成雾的场景)
  • 【JVM】内存分配与回收原则
  • leetcode 3201. 找出有效子序列的最大长度 I II
  • 演示数据库操作
  • 测试学习之——Pytest Day2
  • 《十万线段绘乾坤:Canvas离屏渲染深度剖析》
  • 低代码深度切入制造业需求的实践路径
  • 在 CentOS 8 上彻底卸载 Kubernetes(k8s)
  • 每日钉钉API探索:requestAuthCode网页应用(H5微应用)免登授权
  • 【leetcode】1422. 分割字符串的最大得分
  • 创建SprngBoot项目的四种方式
  • FreeRTOS中断管理STM32
  • 【Java】【力扣】20.有效的括号