1、const相关
复制代码
1.常对象: const 类类型 对象名;
复制代码
2.常对象的特性: 1) 常对象的数据成员不能修改 2)常对象不能调用一般函数,只能调用常函数; 3)常函数返回的引用必须是常引用
复制代码
3.常函数: 类的成员函数形参列表右边写上const,常函数特性: 常函数不能修改数据成员的值;
复制代码
4.C++的两种特殊重载: 1)常函数重载, 2)操作符重载;
复制代码
5.声明成员函数时尽量将不会修改数据成员的函数设置为常函数,常函数更通用: 因为常函数可以被常对象调用,也可以被一般对象调用;
2、static相关
复制代码
1.静态数据成员: 1)在类内声明,必须在类外初始化,(加类域,去static);
复制代码
2.静态数据成员在.data已初始化数据区,是在程序加载到内存时确定内存并初始化;
复制代码
3.静态数据成员的特性:
1) 可以用对象名访问,也可以用类名访问;
2)不管创建多少个对象,它们的同名静态数据成员只有1个
复制代码
4.静态成员函数: 1)在类内声明,类外实现时必须将static去除;
复制代码
5.静态成员函数的特性:
1)可使用对象访问,也可使用类名访问,
2)静态成员函数不能访问一般成员,只能访问静态成员
3)在静态成员函数中不能使用this
复制代码
6.一般成员函数能够访问一般成员,也能访问静态成员;
复制代码
7.静态成员函数作用: 用于创建对象和销毁对象;
复制代码
8.C++中常见开发模式:单例模式、工厂模式,观察者模式,访问者模式,工作流模式;
复制代码
9.单例模式的特征:不管调用多少次,永远一个对象
复制代码
10.实现单例模式:
1) 要把构造函数,拷贝构造函数设置为private;
2) 定义一个静态成员函数负责创建对象
3) 对象指针是静态数据成员
复制代码
11.用于文件系统管理类;
3、访问限定符相关
复制代码
1.封装类时指定访问权限:
复制代码
本类 子类 类外
复制代码
public 公有的 可以 可以 可以
复制代码
protected 保护的 可以 可以 不可以
复制代码
private 私有的 可以 不可以 不可以
复制代码
默认权限(私有的) 可以 不可以 不可以
复制代码
2.如何设置访问权限:
复制代码
1).如果只在本类中使用,就设置为private;子类不能继承;
复制代码
2).如果要在本类和子类中使用,就设置为protected;子类能继承;
复制代码
3).如果要在类外访问,必须设置为public的;子类能继承;
4、构造函数相关
复制代码
1.构造函数:函数名与类名相同,没有返回值,构造函数可以重载
复制代码
2.构造函数的作用: 在给对象分配完内存后对数据进行初始化(还会调用一些初始化函数);
复制代码
3.构造函数的执行: 1) 构造函数是在创建对象时自动调用; 2)new或new[]会自动调用构造函数
复制代码
4.没有调用构造函数 1)用已初始化对象为未初始化对象赋值时; 2)形参对象的创建没有调用构造函数
复制代码
5.explicit用于禁止隐式类型转化,只能用于构造函数
复制代码
6.默认构造函数,如果类内没有定义任何构造函数,则编译器会自动生成默认构造函数,并没有对数据成员初始化(随机数);
复制代码
7.定义类必须显式定义默认构造函数;
复制代码
1) 编译器会自动生成默认构造函数没有对数据成员初始化(随机数)
复制代码
2) 显式定义了带参构造函数,则编译器不会生成默认构造函数;
复制代码
3) 如果未显式定义默认构造函数,则会造成创建默认子类对象失败
复制代码
8.初始化列表:在构造函数形参列表右边: 数据成员1(参数1),数据成员2(参数2)
复制代码
9.初始化列表的执行:在分配内存同时进行;
复制代码
10.初始化列表主要用于初始化以下特殊数据:
复制代码
1) 常量数据成员必须在初始化列表初始化;
复制代码
2) 类中常引用数据成员必须在初始化列表初始化;
复制代码
3) 常量数据成员必须在初始化列表初始化;
复制代码
4) 类中常引用数据成员必须在初始化列表初始化;
复制代码
11.构造的顺序:
复制代码
1) 先构造其它类的对象;按对象的声明顺序构造,先声明的先构造,后声明的后构造
复制代码
2) 再执行本类构造;先执行初始化列表,再执行本类构造函数内部
复制代码
当类中有成员为指针时:构造函数,拷贝构造函数,析构函数,=操作符重载的写法
复制代码
12.浅拷贝:只改变指针的指向,并没有为指针重新分配内存并拷贝值
优点:节省内存,效率高
缺点:不安全,会造成段错误 建议只在同一作用范围内使用
复制代码
13.深拷贝:为指针重新分配内存并拷贝值, 优点:安全, 缺点:占用更多内存,效率低