zoukankan      html  css  js  c++  java
  • 拷贝构造函数

    1.概念

    1)如果构造函数的第一个参数是自身类型的引用(几乎总是const,也可以接受非const,但是无论如何都必须是引用),且任何额外参数都有默认值,则它是拷贝构造函数

    2)第一个参数必须是自身类型的引用:如果某个函数具有这个类的非引用参数,调用过程中要进行拷贝初始化,此时要调用拷贝构造函数来拷贝实参,如果拷贝构造函数的第一个参数不是引用,我们又需要拷贝实参,这样将无限循环下去

    3)拷贝构造函数只有一个形参时,也可以被explicit修饰,当被explicit修饰时,不能使用“=”来调用拷贝构造函数

    class A {
    public:
        A(){}
        A(const A&) {
            cout << "我是A的拷贝构造函数" << endl;
        }
    };
    
    class B {
    public:
        B() {}
        explicit B(const B&) {
            cout << "我是B的拷贝构造函数" << endl;
        }
    };
    int main()
    {
        A a;
        A aa1(a);
        A aa2=a;
    
        B b;
        B bb1(b);
        //B bb2 = b;    //如果有此句,则发生编译错误,因为B的拷贝构造函数是explicit的
    
        return 0;
    }

    运行结果:

    2.合成拷贝构造函数

      如果我们没有为一个类定义拷贝构造函数,编译器将会为我们定义一个,这个就叫合成拷贝构造函数

  • 相关阅读:
    PSP总结报告
    第十三周例行报告
    对团队成员公开感谢
    附加作业 软件工程原则的应用实例分析
    第十二周例行报告
    第十一周例行报告
    第十周例行报告
    第八周例行报告
    第七周例行报告
    第六周例行报告
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9683697.html
Copyright © 2011-2022 走看看