1. 程式人生 > >假如Myclass為一類,執行Myclass a[3],*p[2];語句時會自動呼叫該類建構函式幾次

假如Myclass為一類,執行Myclass a[3],*p[2];語句時會自動呼叫該類建構函式幾次


 

假如Myclass為一類,執行Myclass a[3],*p[2];語句時會自動呼叫該類建構函式幾次?

答:3次 Myclass a[3],*p[2]; a[3]中有3個Myclass物件,定義時會各呼叫Myclass建構函式一次。 Myclass *p[2]只定義了兩個指標,只是兩個指標變數。

 
指標變數其實也可以看作物件的,它的型別是Myclass *, 它如果要呼叫建構函式,也只是類Myclass *的建構函式,而不會是MyClass類的建構函式。何況指標型別都是基本的資料型別,跟int, char 屬於同一類的,基本資料型別是沒有建構函式的。int i;  定義了一個int 型別的變數,而不會呼叫int型別的建構函式,因為沒有這個建構函式。指標變數也是,不會有如int *的建構函式。
#include<iostream>
using namespace std;


class base
{
public:
base()
{
cout<<"construction called"<<endl;


}
};
void main()
{
base a,b[2],*p;
}
這個是呼叫三次