C++拷贝构造函数调用时机分析
生活随笔
收集整理的這篇文章主要介紹了
C++拷贝构造函数调用时机分析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
讓我們來分析下面這段代碼:
#include <iostream> #include <string> using namespace std;class Employee {private:static int sn;public:Employee() {cout << "Employee()" << endl;mysn = sn++;}Employee(const string &s) {cout << "Employee(const string &s)" << endl;name = s;mysn = sn++;}Employee (Employee &e) {cout << "Employee (Employee &e)" << endl;name = e.name;mysn = sn++;}Employee &operator=(Employee &rhs) {cout << "Employee &operator=(Employee &rhs)" << endl;name = rhs.name;return *this;}const string &get_name() {return name;}int get_mysn() {return mysn;}private:string name;int mysn; };int Employee::sn = 0;void f(Employee &s) {cout << s.get_name() << " " << s.get_mysn() << endl; }int main() {Employee a("趙"), b = a, c;c = b;Employee d = c;Employee e;e = c;f(a);f(b);f(c);f(d);f(e);return 0; }測試結(jié)果:
Employee(“趙”):調(diào)用了Employee(const string &s)
Employee b = a 調(diào)用了Employee (Employee &e),可以看成Employee b(a),如果我們將Employee b = a改成:Employee b(a);也是調(diào)用Employee (Employee &e)
Employee c 調(diào)用了Employee()
c = b;調(diào)用了Employee &operator=(Employee &rhs)
Employee d = c;調(diào)用了Employee (Employee &e),可以看成Employee d( c ),如果我們將Employee d = c改成Employee d( c ),也是調(diào)用Employee (Employee &e)
Employee e;調(diào)用了Employee()
e = c;調(diào)用了Employee &operator=(Employee &rhs)
如有錯誤,請在評論區(qū)留言指正一下,謝謝 !!!
總結(jié)
以上是生活随笔為你收集整理的C++拷贝构造函数调用时机分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吉利银河 E8 半幅式方向盘曝光:零百加
- 下一篇: 《C++ Primer》13.1.1节练