C++ 构造函数

默认构造函数(default)

class joker{
    joker()=default;
};

当出现有参数的构造函数时,编译器就不会创建默认构造函数。但是又想生产默认构造函数怎么办,default 作用就是声明一个默认构造函数。

default可以用于构造函数,拷贝构造函数,析构函数。

浅拷

class joker{
    public:
    joker(joker& clown){
    a=clown.a;
    b=clown.b;
    }
    int a,b;

};

为什么必须要用引用?

不加引用的话会产生拷贝递归,形参与实参的拷贝会无休止的进行。

深拷

class joker{
public:
joker(joker& clown){
a=clown.a;
b=clown.b;
c=new char[strlen(clown.c)];
strcpy(clown.c,c); 
}
~joker(){
delete []c;
}
int a,b; char *c; };

深层拷贝的目的是防止指针变量被析构两次,造成内存泄漏。

 

posted @ 2021-12-21 10:33  joker_2255  阅读(32)  评论(0)    收藏  举报