C++3

C++3

2.2三种关系判断
2.3分文件编写
2.3.1.h中写类的成员函数声明
2.3.2.cpp中写成员函数实现
3对象的初始化和清理
3.1构造函数
3.1.1没有返回值 没有void,类名相同,可以发生重载,可以有参数
3.2析构函数
3.2.1没有返回,没有void ,函数名称: ~类名,不可以发生重载,不可以有参数
3.3系统会默认调用 构造函数和析构函数,而且只会调用一次
3.4如果程序员没有提供构造和析构,系统会默认提供,空实现
4构造函数的分类及调用
4.1按照参数分类
4.1.1无参构造(默认构造) 有参构造
4.2按照类型分类
4.2.1普通构造函数 拷贝构造函数
4.3无参构造写法 和调用
4.3.1 Person p1 ; 注意不能写 Person p1() ,因为编译器认为这个是函数声明
4.4有参构造写法 和调用
4.4.1 Person p2(10) 或者 Person p2 = Person(10)
4.4.2Person(10) 匿名对象 ,执行当前行后就会释放这个对象
4.5拷贝构造函数
4.5.1Person( const Person & p )
4.5.2Perons p1( p2) 或者 Person p1 = Person(p2)
4.5.3不能用拷贝构造函数初始化匿名对象
4.5.3.1如果写成 Person (p1) 这种写法等价于 Person p1
4.5.3.2写到右值可以做拷贝构造函数
4.6Person P = 100 隐式类型转换 相当于调用 Person p = Person(100)
5拷贝构造函数调用时机
5.11、用已经创建好的对象来初始化新的对象
5.22、以值传递的方式给函数参数传值
5.33、以值方式返回局部对象
5.4release 默认下会做优化
6构造函数的调用规则
6.1如果提供了有参的构造,那么系统就不会提供默认的构造了,但是会提供拷贝构造
6.2如果提供了拷贝构造函数,那么系统就不会提供其他的构造函数了
7深拷贝与浅拷贝
7.1系统默认提供的拷贝构造 会进行简单的值拷贝
7.2如果属性里有指向堆区空间的数据,那么简单的浅拷贝会导致重复释放内存的异常
7.3解决上述问题,需要我们自己提供拷贝构造函数,进行深拷贝
8初始化列表语法
8.1在构造函数后面 + : 属性(值、参数), 属性(值、参数)…
9类对象作为成员的案例
9.1当类对象作为类的成员时候,构造顺序是先构造类对象的构造,然后构造自己,
9.2析构顺序与构造相反
10explicit关键字
10.1作用:防止构造函数中的隐式类型转换
11new 运算符 和 delete运算符
11.1Person * p = new Person 会返回一个Person指针
11.2默认调用构造函数,开辟空间,返回不是void* ,不需要强制转换
11.3delete释放
11.4 new 对象 用void* 去接受,释放不了对象
11.5new出来的是数组 ,如何释放? delete [] …
11.6new出来的是数组,肯定会调用默认构造

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值