程序設計與算法(三)第03周測驗002:Big & Base 封閉類問題

程序設計與算法(三)第03周測驗002:Big & Base 封閉類問題

本文是中國大學MOOC,北京大學程序設計與算法(三)C++面向對象程序設計第三週測驗。本課程學習的github倉庫歡迎Fork

  • 總時間限制:

    1000ms

  • 內存限制:

    65536kB

  • 描述

    程序填空,輸出指定結果

    #include <iostream>
    #include <string>
    using namespace std;
    class Base {
    public:
    	int k;
    	Base(int n):k(n) { }
    };
    class Big
    {
    public:
    	int v;
    	Base b;
    // 在此處補充你的代碼
    };
    int main()
    {
    	int n;
    	while(cin >>n) {
    		Big a1(n);
    		Big a2 = a1;
    		cout << a1.v << "," << a1.b.k << endl;
    		cout << a2.v << "," << a2.b.k << endl;
    	}
    }
    
  • 輸入

    多組數據,每組一行,是一個整數

  • 輸出

    對每組數據,輸出兩行,每行把輸入的整數打印兩遍

  • 樣例輸入

    3
    4
    
  • 樣例輸出

    3,3
    3,3
    4,4
    4,4
    

    老規矩,先看主函數:

    int main()
    {
    	int n;
    	while(cin >>n) {
    		Big a1(n);		//構造函數,初始化a1
    		Big a2 = a1;	//複製構造函數,複製a1
    		cout << a1.v << "," << a1.b.k << endl;
    		cout << a2.v << "," << a2.b.k << endl;
    	}
    }
    

    再看類函數:

    class Base {
    public:
    	int k;
    	Base(int n):k(n) { }
    };
    
    class Big	//有成員變量的類叫封閉類
    {
    public:
    	int v;
    	Base b;	//成員對象
    // 在此處補充你的代碼
    };
    

    注意,這是一個封閉類,課程的PPT有講到:

    任何生成封閉類對象的語句,都要使得編譯器明白,對象中的成員對象,是如何初始化的。完成這一任務的方法是通過封閉類的構造函數的初始化列表,成員對象初始化列表中的參數可以是任意複雜的表達式,可以包括函數,變量,只要表達式中的函數或變量有定義就行。

    如果題目不懂,不妨把課程對應部分再看一遍。慢慢來,比較快。不要心浮氣躁。

    所以我們需要使用初始化列表進行封閉類的初始化:

    class Big
    {
    public:
        int v;
        Base b;
    // 在此處補充你的代碼
        Big(int n):v(n),b(n){}	//初始化列表
    };
    

    提交,通過。記得下載通過碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章