C++ 基础小节2

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.深拷贝:为指针重新分配内存并拷贝值,    优点:安全,      缺点:占用更多内存,效率低
相关推荐
御坂100272 小时前
EasyExcel - 行合并策略(二级列表)
java·开发语言
??? Meggie2 小时前
【Python】使用python 对excel文件进行加密
开发语言·python·excel
大风起兮126 小时前
ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义
开发语言·单片机·嵌入式硬件
不是AI6 小时前
【C语言】【C++】Curl库的安装
c语言·开发语言·c++
NoneCoder6 小时前
JavaScript系列(26)--安全编程实践详解
开发语言·javascript·安全
编程小筑6 小时前
R语言的数据库编程
开发语言·后端·golang
计算机小混子6 小时前
C++实现设计模式---模板方法模式 (Template Method)
c++·设计模式·模板方法模式
兩尛6 小时前
maven高级(day15)
java·开发语言·maven
大熊程序猿6 小时前
golang 环境变量配置
开发语言·后端·golang
蒲公英的孩子7 小时前
DCU异构程序--矩阵乘
linux·c++·分布式·矩阵·架构