1 编译器生成的成员函数
(1)默认构造函数
这个不做详细的介绍,相信的大家已经很了解了。
(2)复制构造函数
className(const className &);
在下述情况下将使用复制构造函数
a)将新的对象初始化为一个同类的对象
b)按值就对象传递给参数
c)函数按值返回对象
d)编译器生成临时对象
(3)复制操作符
className & operator= (const className &);
不要将复制和初始化混淆了,如果创建新的对象则是初始化,如果语句修改已有对象的值,则是赋值
className object1;
className ob2 = object1; // 这是初始化
className ob3;
ob3 = object1;//这是赋值
之所以要区分开,是因为赋值和初始化默认调用的函数是不同的
2 其他类方法
(1)构造函数 不做介绍
(2)析构函数 这里注意,在类的继承的中,即使基类不需要析构函数,也应该定义一个虚拟的析构函数。这
是很好的编程习惯
(3)转换函数
(4) 按值传递对象与传递引用
通常使用对象作为参数时,应该按引用而不是按值传递对象,其原因主要有两点:
a)提高效率。按值传递时要生成临时对象,就会调用复制构造函数,然后还要调用析构函数,要花费很多时间,如果不修改对象的值,最好加上const
b)在使用虚函数时,按引用传递,可以让基类类型的参数接受派生类的对象
(5)返回对象和返回引用
原则是方法如果能返回引用,就不用返回对象,即引用首选