關於c++繼承的一系列問題總結
阿新 • • 發佈:2018-12-09
面向物件設計的重要目的之一就是程式碼重用,而繼承和多型是面向物件的兩個最主要的特徵。本文將主要圍繞c++中的繼承展開討論,並以一些簡單的例子來說明。
一.首先觀察在繼承中,成員物件的初始化。
1.建立派生類物件時,程式首先建立基類物件,這意味著基類物件應當在程式進入派生類建構函式前被建立。
2.派生類建構函式應通過成員初始化列表將基類資訊傳遞給基類的建構函式。
3.派生類的建構函式總是呼叫一個基類建構函式。
請看如下一個簡單的繼承問題:
基類的標頭檔案base.h:
#ifndef BASE_H_ #define BASE_H_ class base { private: int s; public: base(int age);//基類的建構函式 }; #endif
base.cpp:
#include<base.h>
#include<iostream>
using namespace std;
base::base(int age)
{
s = 6;
cout << "這是基類的建構函式" <<"\n";
cout << "hello my name is Zjh" << "\n";
cout << "I am " <<age<<" years old \n";
}
子類 son.h
#ifndef SON_H_ #define SON_H_ #include<base.h> class son : public base //繼承 { private: int a; public: son (int age); //子類的建構函式 }; #endif
子類 son.cpp
#include<son.h> #include<iostream> #include<string> using namespace std; son::son(int age ) :base(22) //基類建構函式有輸入引數,子類應顯式的呼叫基類的建構函式 { a = 10; cout << "我是子類的建構函式" << "\n"; cout << "hello my name is anni" << "\n"; cout << "I am " << age << " years old \n"; }
主函式:
#include<iostream>
#include<base.h>
#include<son.h>
int main()
{
son x(18);
}
程式執行結果:
二、虛擬函式,多型性是面向物件程式設計的重要特徵,過載和虛擬函式是體現多型性的兩個重要手段......