第八天2017/04/17(1、拷贝构造、❤临时对象)

来源:互联网 发布:华为数据库一体机 编辑:程序博客网 时间:2024/06/16 04:37

调用拷贝构造函数的三种case

1. MyPoint p2 = p1;  MyPoint p2(p1);    case1中的重点:MyPoint p3 = MyPoint(3,3); //此时:C++编译器进行优化,       //只调用一次构造函数(并不涉及拷贝构造函数的调用)2. 形参:类对象,实参:类对象3. 返回值:类对象/*总结与技巧:    一定要区分等号的两种含义:其中一种是拷贝、另外一种是简单赋值。    临时对象析构的时间是遇到主调函数中的第一个分号“;”。*/#include <iostream>using namespace std;class MyPoint{public:    MyPoint()    {        cout<<(int)this<<"构造函数"<<endl;    }    MyPoint(const MyPoint& obj)    {        cout<<(int)this<<"拷贝构造函数"<<endl;    }    MyPoint& operator=(const MyPoint& obj)    {        cout<<"赋值等号操作"<<endl;        return *this;    }    ~MyPoint()    {        cout<<(int)this<<"析构函数"<<endl;    }};void f1(MyPoint p){}MyPoint f2(){    MyPoint p;      return p;     }  int main(){//case1:    MyPoint p1;   //构造函数    MyPoint p2 = p1;   //MyPoint p2(p1);  //拷贝构造函数//case1中的重点    MyPoint p3 = MyPoint(); //【重点】C++编译器进行了优化,只调用——>构造函数//case2:        MyPoint qq;  //构造函数    f1(qq);   //拷贝构造函数tmp、析构tmp//case3:区分下面两种情形,对比分析    qq = f2(); //构造函数p、拷贝构造函数tmp、析构函数p、赋值=、析构函数tmp    MyPoint pp = f2(); //构造函数p、拷贝构造函数tmp、析构函数p    return 0;}
0 0
原创粉丝点击