對,建構函式不屬於可呼叫函式,它只是用於所屬類的物件在建立時用於成員初始化,所以是隻為本類物件服務的。
如果基類的建構函式是無參的(預設建構函式),派生類就不需要定義。但如果基類的建構函式是有參的,而且派生類也無法在定義時確定,也就是引數來自應用程式環境,那麼派生類需要編寫對應的有參建構函式,將引數傳遞給基類初始化;而如果基類建構函式中的引數由派生類能夠確定的,那麼在派生類的無參建構函式中定義常量,傳遞給基類初始化。
比如:
//基類
class A
{
public:
A(int a){x=a; }//基類有參建構函式
private:
int x;
}
//派生類B,接收外部引數
class B
:A
B(int a):A(a){}// 派生類有參建構函式接受外部引數傳遞給基類
//派生類C,內部傳遞給基類
class C
C():A(10){}//派生類的無參建構函式將常量10傳遞給基類初始化
對,建構函式不屬於可呼叫函式,它只是用於所屬類的物件在建立時用於成員初始化,所以是隻為本類物件服務的。
如果基類的建構函式是無參的(預設建構函式),派生類就不需要定義。但如果基類的建構函式是有參的,而且派生類也無法在定義時確定,也就是引數來自應用程式環境,那麼派生類需要編寫對應的有參建構函式,將引數傳遞給基類初始化;而如果基類建構函式中的引數由派生類能夠確定的,那麼在派生類的無參建構函式中定義常量,傳遞給基類初始化。
比如:
//基類
class A
{
public:
A(int a){x=a; }//基類有參建構函式
private:
int x;
}
//派生類B,接收外部引數
class B
:A
{
public:
B(int a):A(a){}// 派生類有參建構函式接受外部引數傳遞給基類
}
//派生類C,內部傳遞給基類
class C
:A
{
public:
C():A(10){}//派生類的無參建構函式將常量10傳遞給基類初始化
}