构造函数
当在创建一个类的对象时,会自动调用构造函数。构造函数可以重载。
但参数的构造函数可以当作转换函数来使用,代码如下
class A
{
private:
int a;
public:
A(int n):a(n){}
}
int main()
{
A a = 10; // 调用单参数的构造函数
return 0;
}
赋值构造函数
函数原型是: className(const className &c);
如果类的成员含有指针变量,则应该重载该函数。如果不重载,在使用一个对象创建另一个对象时就只会拷贝指针的值, 而不会拷贝指针所指向的内容。这样会导致内存被重复释放。
赋值运算符函数
函数原型是: className& operator=(const className &c);
该函数同样是在有成员指针变量的情况下需要重载。如果不重载,在使用一个对象给另一个对象赋值时,会导致内存的泄漏,并且也会导致内存的重复释放。
在重载该函数时,还有一个需要注意的地方是,需要判断传入的对象是否自身,如果不判断的话,在传入自身时会丢失数据。
网友评论