C++面向物件入門(七)拷貝建構函式呼叫時機
阿新 • • 發佈:2020-08-09
C++中類的拷貝建構函式呼叫的時機
1,使用已建立的物件建立新的物件
2,物件已值傳遞的方式作為函式引數
3,函式返回值為區域性物件
#include <iostream> #include <string> using namespace std; class Rider{ private: string name; public: string getName(){ return name; } Rider(){ cout << "Rider類無參建構函式呼叫" << endl; } Rider(string name){ cout << "Rider類有參建構函式呼叫" << endl; } /** * 拷貝建構函式呼叫時機 * 1,使用已建立的物件建立新的物件 * 2,物件以值傳遞的形式作為函式的引數 * 3,函式返回值為區域性物件 * @param rider */ Rider(const Rider& rider){ cout << "Rider類拷貝建構函式呼叫" << endl; } ~Rider(){ cout<< "Rider類解構函式呼叫" << endl; } }; void func1(Rider rider); Rider func2(); /** * 使用已建立的物件建立新的物件 */ void test1(){ Rider r1("zero one"); Rider r2(r1); } /** * 物件以值傳遞的形式作為函式的引數 */ void test2(){ Rider r1("thousand"); func1(r1); } /** * 3,函式返回值為區域性物件 */ void test3(){ Rider r1= func2(); cout << "Adderss of Rider r1 is " << (int)&r1 << endl; } Rider func2() { Rider r1 = (string)"thunder"; cout << "Adderss of Rider r1 is " << (int)&r1 << endl; return r1; } void func1(Rider rider) { cout << "函式func1呼叫" << endl; } int main() { // test1(); // test2(); test3(); system("pause"); return 0; }