拷贝构造器

固定语法:

class 类名
{
    类名(const 类名& 变量名){  //类名& 表示引用
        ...
    }    
};

eg: Girl

class Girl
{
    Girl(const Girl& another){
        ...
    }
};

实例

int main(int argc, char const *argv[])
{
    Girl girl;//发生了普通构造
    Girl girl2 = girl; //发生了拷贝构造
    Girl girl3(girl2); //发生了拷贝构造
    return 0;
}

拷贝构造器的本质:

由已存在对象,创建新的对象

新对象不是由构造器来构造的,而是由拷贝构造器来构造的。

#include <iostream>
using namespace std;

class Girl
{
public:
    Girl(){
        cout<<"构造器"<<endl;
    };
    ~Girl(){
        cout<<"析构器"<<endl;
    };
    Girl(const Girl& another){
        cout<<"拷贝构造器"<<endl;
    };
private:
    int age;

};
int main(int argc, char const *argv[])
{
    Girl girl; //普通构造
    Girl girl2 =girl; //拷贝构造
    Girl girl3(girl2);//拷贝构造

    Girl girl4; //普通构造
    girl4 = girl2;//未出发拷贝构造,这种叫运算符重载,用到了this指针
    return 0;
}
/*
构造器
拷贝构造器
拷贝构造器
构造器
析构器
析构器
析构器
析构器
*/

results matching ""

    No results matching ""