16.静态成员变量和静态成员函数
- 如果在类中使用static修饰一个静态成员变量,(不在栈上开,不在堆上开,而是在静态区)
- 静态成员变量初始化一定要写在类的外边 int AA::m_c =0;(和私有/共有没有关系)
- m_c 只是属于AA整个类,而不是属于a1,和a2
- static void test() 说明这个函数只能在该文件中可见,其他文件调用这个函数不可以,多文件编程不可以,静态成员函数也是属于整个类的AA,而不是属于a1,和a2
- 静态成员函数怎么当左值;
- 只有普通成员变量才能占用内存空间,全部相加然后进行对齐补缺,static和函数不占用类的大小
17.new 和delete
new delete C++ ---在heap上面创建变量
malloc(sizeof(int)) free(p) C ----在heap上面创建变量
区别
- malloc free是c标准库的函数 //new, delete是c++函数的操作符,(效率快,没有压栈)
- 如果使用malloc 必须另外初始化,但是new在堆上初始化一个对象的时候,会触发对象的构造函数做初始化
- malloc并不会能触发对象的析构函数,delete可以触发对象的析构函数
- new返回的是一个指针