Write the execution results of constructor

 寫出建構子的執行結果

請回答下列有關 C++程式的問題:(每小題 10 分,共 20 分)

如果執行起來,請問執行的螢幕輸出為何?

請解釋每一行輸出是由那個物件在那個時間點前後(請參考程式所標示的時間點

1, 2 ,3 ,4 ,5)印出的?

#include "car.h"

#include <iostream>

using namespace std ;

Car::Car() { cout << "Car is constructed" << endl ;}

Car::~Car() { cout << "Car is destroyed!" << endl ;}

//----------------------------------------------------

Car honda ;

1:main() {

2: Car bmw ;

3: Car *camery = new Car() ;

4: honda.color = 1 ;

5: camery.color = 100 ;

6:}

答案

(一) 螢幕印出
car is constructed
car is destroy!
(二)輸出是由那個物件在那個時間點前後印出
car is constructed //行號3,程式碼Car *camery = new Car() ;,建立Car類別物件時,會呼叫Car類別建構子印出
car is destroy! //行號6,結束main 函式,會刪除camery物件,首先會呼叫~Car解構子函式印出

下面為每一行程式碼的解釋
1:執行main 函式,程式的進入點
2:需告變數bmw之型態為Car類別
3:宣告一個指標變數camery型態為Car類別 ,並建立Car物件,指標指向新建立的物件。建立Car類別物件時,會呼叫Car類別建構子,印出“car is constructed “
4:honda.color=1;將1指定給honda物件的color成員,會發生honda物件不存在的編譯錯誤,因為honda變數只有宣告並未建立該物件
5:. Camery.color=100;
將100指定給camery物件的color成員
不過color成員不存在,會出現編譯錯誤
6:結束main 函式,會刪除camery物件以回收記憶體,首先會呼叫~Car解構子函式,印出“car is destroy!“

chatgpt回答

這是一段C++程式碼,其中定義了一個名為`Car`的類別。接著,在`main`函數中創建了幾個`Car`物件,並對這些物件執行了一些操作。程式碼執行時會輸出相應的訊息,根據你提供的時間點1、2、3、4、5,我們可以來解釋輸出:


1. `Car is constructed` 這是`honda`物件的建構子函數執行的結果,因為`honda`是在程式一開始就創建的。


2. `Car is constructed` 這是`bmw`物件的建構子函數執行的結果,因為`bmw`是在`main`函數中宣告時創建的。


3. `Car is constructed` 這是`camery`物件的建構子函數執行的結果,因為`camery`是使用`new`運算子在`main`函數中動態分配記憶體而創建的。


4. 沒有明確指出`color`成員是哪個物件的成員。可能是`honda`物件,但在程式碼中,未顯示`color`成員的定義和賦值。該行可能需要額外的程式碼,以確保`color`是`Car`類別的成員,或者需要指明該成員屬於哪個物件。


5. `camery`物件的`color`成員被設定為100。這個操作將`camery`物件的`color`成員設定為100。


總結:程式輸出的結果是建構和解構不同`Car`物件時相應的訊息,以及`color`成員的設定。


Comments

Popular posts from this blog

How to write data into a excel file using vbscript

Format date as yyyy-mm-dd using vbscript