1. 程式人生 > 實用技巧 >C++面向物件入門(七)拷貝建構函式呼叫時機

C++面向物件入門(七)拷貝建構函式呼叫時機

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; }