构造函数和析构函数
构造函数
构造函数是特殊的成员函数,与类同名,没有返回类型,而且允许重载。如果没有为类显式定义任何构造函数,编译器将自动为类生成默认构造函数(不带任何参数)。
复制构造函数
复制构造函数、赋值操作符合析构函数总称为复制控制。复制构造函数只有单个形参,而且该形参是对本类类型的引用(通常用const修饰)。复制构造函数常用于:
1)根据另一个同类型的对象初始化一个对象
string a("123456");
string b(a);
2)在顺序容器的元素初始化和类类型数组元素初始化时,也会默认使用复制构造函数。
3)复制一个对象,将它作为实参传给一个函数或从函数返回时复制一个对象。也就是说,如果函数的形参或返回值是一个类的话,将会调用复制构造函数进行复制。
class Myclass
{
public:
Myclass(int n) { number = n; }
Myclass(const Myclass &other)
{
number = other.number;
cout << "copy";
}
private:
int number;
};
Myclass fun(Myclass p)
{
Myclass temp(p);
return temp;
}
void main()
{
Myclass a(10);
Myclass b(a);
Myclass c = fun(b);
system("pause");
}
<