程序設計實習MOOC/7998/3w8:第三週程序填空題3

3w8:第三週程序填空題3

總時間限制: 1000ms 內存限制: 65536kB
描述
下面程序的輸出是:ios

10

請補足Sample類的成員函數。不能增長成員變量。函數

#include <iostream>
using namespace std;
class Sample{
public:
    int v;
    Sample(int n):v(n) { }
// 在此處補充你的代碼
};
int main() {
    Sample a(5);
    Sample b = a;
    cout << b.v;
    return 0;
}

輸入spa

輸出code

10

樣例輸入對象

樣例輸出內存

10

題解分析

先上完整的題解代碼io

#include<iostream>
using namespace std;
class Sample{
    public:
        int v;
        Sample(int n):v(n){}
        Sample(Sample& s){
            v = 10;
        }
};
int main(){
    Sample a(5);
    Sample b = a;
    cout<<b.v<<" "<<a.v;
    return 0;
}

在代碼 Sample b = a;中,這裏的=初始化,而不是賦值,在用同類型的對象對對象初始化的時候會調用複製構造函數。形如Sample(Sample& s),以同類型的引用做爲構造函數的參數的構造函數是複製構造函數。在 Sample b = a;中,a是複製構造函數的參數,調用構造函數的對象的v的值被賦值爲10。class

調用複製構造函數的三種狀況stream

1.初始化:當用一個對象去初始化同類的另外一個對象時
2.函數參數:若是某函數有一個參數是類A的對象,那麼該函數被調用時,類A的複製構造函數被調用
3.函數返回值:若是函數的返回值是類A的對象時,則函數返回時,A的複製構造函數被調用
相關文章
相關標籤/搜索