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.深拷贝:为指针重新分配内存并拷贝值,    优点:安全,      缺点:占用更多内存,效率低
相关推荐
LyaJpunov7 分钟前
C++中move和forword的区别
开发语言·c++
程序猿练习生12 分钟前
C++速通LeetCode中等第9题-合并区间
开发语言·c++·leetcode
z千鑫20 分钟前
【人工智能】如何利用AI轻松将java,c++等代码转换为Python语言?程序员必读
java·c++·人工智能·gpt·agent·ai编程·ai工具
一名路过的小码农22 分钟前
C/C++动态库函数导出 windows
c语言·开发语言·c++
m0_6312704025 分钟前
标准c语言(一)
c语言·开发语言·算法
万河归海42825 分钟前
C语言——二分法搜索数组中特定元素并返回下标
c语言·开发语言·数据结构·经验分享·笔记·算法·visualstudio
Messiah___30 分钟前
【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑
开发语言·php
农民小飞侠1 小时前
python AutoGen接入开源模型xLAM-7b-fc-r,测试function calling的功能
开发语言·python
指尖流烟1 小时前
C#调用图表的使用方法
开发语言·c#
Ddddddd_1581 小时前
C++ | Leetcode C++题解之第416题分割等和子集
c++·leetcode·题解