2.自定义类型

1.当一个对象被创建时,this指针就存放指向对象数据的首地址;当类对象去调用类的非静态成员函数时,函数的首地址会隐藏的加入this指针。

2:在不加限定符的情况下,值传递不会改变传入值,引用及指针传递可以改变传入值,引用传递加上const修饰后就不会了。

(引用必须是引用已有的对象;引用不会重新开辟空间;引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。int ar[20] = { 0 };    int(&br)[20] = ar;//数组的引用格式)

3.构造函数有3个作用:1)构造对象, 2)初始化对象, 3)隐式转换:临时产生一个const类型的无名临时中间桥梁(对象),explicit  禁止隐式转换可以禁止第三情况发生(定义一个对象时有且只自动执行一次,所有构造函数均可以重载)。

4.拷贝构造函数必须以引用传递,否则,函数会引发无限递归而崩溃,因以引用传递需加const修饰。

5.赋值语句以值传递会先调用构造函数,造成时间空间浪费;因此以引用传递,const防止修改传入对象参数(必须先判断是不是自己给自己赋值,如果是自己给自己赋值没有意义直接return),返回Test &  是为了实现连等赋值,如果不加&会调用拷贝构造函数,浪费时间空间(return 对象为临时对象不可以使用 & 修饰)。

猜你喜欢

转载自blog.csdn.net/qq_42100881/article/details/80174841