拷贝构造函数的调用时机1,2 对象初始化时机

来源:互联网 发布:淘宝关键词分析工具 编辑:程序博客网 时间:2024/05/07 12:01

拷贝构造函数有四种调用时机,这篇文章只示例前两个调用时机:

1.使用赋值操作符方式用一个对象初始化另外一个对象;

2.使用构造函数的方式用一个对象初始化另外一个对象。


#include <iostream>using namespace std;class Test4{public:Test4(){m_a = 0;m_b = 0;cout << "无参构造函数" << endl;}Test4(int a){m_a = a;m_b = 0;}Test4(int a, int b) {m_a = a;m_b = b;cout << "有参构造函数" << endl;}Test4(const Test4& obj){cout << "拷贝构造函数" << endl;m_a = obj.m_a;m_b = obj.m_b;}private:int m_a;int m_b;};//第一种调用时机:使用赋值操作符方式用一个对象初始化另外一个对象void first_time(){Test4 t0(1, 2);Test4 t1(1, 2);//用t1初始化t2,会调用拷贝构造函数Test4 t2 = t1; //用t1给t0赋值,赋值操作与初始化是两个不同的概念,此时不会调用拷贝构造函数,而是调用“=”操作符函数,相当于重载。t0 = t1; }//第二种调用时机:使用构造函数的方式用一个对象初始化另外一个对象void second_time(){Test4 t3(1,2);//用t3初始化t4,会调用拷贝构造函数Test4 t4(t3);}int main(int argc, char const *argv[]){first_time();second_time();return 0;}


0 0
原创粉丝点击