C 基類和派生類的建構函式(詳解)

2021-10-08 04:23:37 字數 473 閱讀 8724

基類的成員函式可以被繼承,可以通過派生類的物件訪問,但這僅僅指的是普通的成員函式,類的建構函式不能被繼承。建構函式不能被繼承是有道理的,因為即使繼承了,它的名字和派生類的名字也不一樣,不能成為派生類的建構函式,當然更不能成為普通的成員函式。

在設計派生類時,對繼承過來的成員變數的初始化工作也要由派生類的建構函式完成,但是大部分基類都有 private 屬性的成員變數,它們在派生類中無法訪問,更不能使用派生類的建構函式來初始化。

這種矛盾在c++繼承中是普遍存在的,解決這個問題的思路是:在派生類的建構函式中呼叫基類的建構函式。

下面的例子展示了如何在派生類的建構函式中呼叫基類的建構函式:

#include

using

namespace std;

//基類people

class

people

{

protected

C 基類和派生類的建構函式

前面我們說基類的成員函式可以被繼承,可以通過派生類的物件訪問,但這僅僅指的是普通的成員函式,類的建構函式不能被繼承。建構函式不能被繼承是有道理的,因為即使繼承了,它的名字和派生類的名字也不一樣,不能成為派生類的建構函式,當然更不能成為普通的成員函式。在設計派生類時,對繼承過來的成員變數的初始化工作也...

基類與派生類的建構函式

一 預設建構函式的呼叫關係 通過下面的例子,我們來看一下基類與派生的建構函式的呼叫順序。建立時先基類後派生類。銷毀時先派生類後基類。include include using namespace std class cbase cbase class cderive public cbase cde...

c ,派生類無法呼叫基類建構函式

include include using namespace std class undergraduate void showinfo private char id 10 char name 10 char major 10 class graduate public undergraduat...