程式原始碼:
#include "stdafx.h"
#include
#include
#define pi 3.14
inline double sqr(double x)
class ccircle
;void setradius(double radiusval)
double getradius() const
double area() const
void showdata();
protected:
double radius;
private:
};class ccylinder: public ccircle
void setheight(double heightval)
double getheight() const
double area() const
void showdata();
protected:
double height;
private:
};void ccircle::showdata()
void ccylinder::showdata()
int main(int argc, char* argv)
輸出結果:
circle radius = 1;
circle area = 3.14;
cylinder radius = 1;
cylinder height = 10;
cylinder area = 69.08
特別注意以下兩處:
1) ccircle(double radiusval=0):radius(radiusval){};
radius 是類的成員變數,當用此建構函式初始化類時, radius同時被賦值初始化;
2)class ccylinder: public ccircle
ccylinder 繼承自ccircle; 當ccylinder用此建構函式初始化時,成員變數height同時被初始化賦值為heightval; 繼承自父類ccircle的成員變數radius被初始化為radiusval(成員radius時用ccricle類中的構造杉樹呼叫實參radiusval進行初始化的。)
ccylinder類的函式getheight和setheight分別用於設定和查詢成員height.此類使用繼承的setradius和getradius處理成員radius。函式area取消了繼承的函式ccircle::area(), 返回圓柱體的表面積。注意:此函式明確的用到繼承函式ccircle::area().
建構函式初始化列表和初始化函式
其實並沒有所謂的初始化函式的概念,本文中的初始化函式只是說明在函式體內進行賦值。而初始化列表才是真正意義上的物件初始化。使用初始化列表效率會高一點。c 規定,物件的成員變數的初始化動作發生在進入建構函式本體之前。在建構函式體內只是賦值,並不是初始化。請看下面這個栗子 class base publi...
建構函式初始化(預設構造)
當且僅當沒有定義任何建構函式時,編譯器才會提供預設建構函式。為類定義了建構函式後,程式設計師就必須為他提供預設建構函式。我們怎麼理解這句話呢?首先,什麼是預設建構函式?預設建構函式時在未提供顯示初始化時,用來建立物件的建構函式。也就是說,它是用於下面這種宣告的建構函式 expa expa 然後我們看...
建構函式初始化列表
建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化式。例如 example example ival 0 dval 0.0 ival 和dval 是類的兩個資料成員 上面的例子和下面不用初始化列表的建構函式看似沒什麼區別 example exa...