1 类的构造和析构函数
拷贝和赋值函数
以及各种用到的何种函数
2 访问public protect private
继承 权限
3 成员变量为常量 ,引用,指针,静态,
成员函数常量 静态
使用注意事项
1 类的构造和析构函数
把对象的初始化工作放在构造函数中,把清除工作放在析构函数中。当对象被创建时,构造函数被自动执行
当对象消亡时,析构函数被自动执行。这下就不用担心忘了对象的初始化和清除工作。
构造函数执行时,对象的内存空间已经分配好,构造函数的作用就是初始化这片空间,
初始化列表:
如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。
常量和引用必须在初始化列表中完成初始化,不能在函数内。
其中成员对象的初始化和建立的顺序有关,和初始化顺序无关。
类的数据成员的初始化可以采用初始化表或函数体内赋值两种方式,这两种方式的效率不完全相同。非内部数据类型的成员对象应当采用第一种方式初始化,以获取更高的效率。初始化列表和函数内是不同的·!!
静态成员变量必须在定义类的cpp文件中声明或者初始化,不然链接时会出错!
2 析构函数
要是成员变量new了空间,在析构中delete
3 拷贝构造函数和赋值函数
对于指针变量,一定要有拷贝构造函数和赋值函数,对指针进行深拷贝,不然会在使用中出现错误!
(下面来自:高质量的c/c++编程指南)
由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:
本章开头讲过,如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”
的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐
含了错误。以类String 的两个对象a,b 为例,假设a.m_data 的内容为“hello”,b.m_data
的内容为“world”。
现将 a 赋给b,缺省赋值函数的“位拷贝”意味着执行b.m_data = a.m_data。这
将造成三个错误:一是b.m_data 原有的内存没被释放,造成内存泄露;二是b.m_data
和a.m_data 指向同一块内存,a 或b 任何一方变动都会影响另一方;三是在对象被
析构时,m_data 被释放了两次。