1樓:非常愛學習的人
必須,函式是否為const也是過載條件之一比如在一個類裡,存在重名函式
void print();
void print()const;
那麼是合法的過載
但是如果是
int print();
const int print();
則不是合法過載
因此想要實體化circle類,必須實現一個形如double print()const的函式才行
2樓:匿名使用者
virtual double print()const=0;這裡指明一個一const型別的函式,並且是一個沒有函式體的純虛擬函式。因此,在派生的時候,也應該是一個const型別的函式。函式過載的條件是,函式名和型別是一樣的。
在類的繼承時,引數及返回值型別也要一樣,但在不使用類的一般情況下,引數型別和個數以及返回值型別可以不同,但函式名必須也要相同,同時,引數個數及型別一定不能與被過載的函式完全相同。例如:
void print();
void print(int i);
是一對過載函式。
void print(int i);
void print(float i);
也是一對過載函式。
而void print();
float print();
則不是一對過載函式。
c定義虛基類Shape,在Shape類的基礎上
include using namespace std class shape void shape createshape class rectangle virtual public shape rectangle rectangle float a,float b float rectangl...
C 類的公有繼承,基類的私有成員在派生類中不可見或不可訪問
在c 語言中,一個派生類可以從一個基類派生,也可以從多個基類派生。從一個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為多繼承。方式如下 公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是基類的公有成員...
在C 中,我的問題關於 基類有同名成員引起的二義性這個知識點
我來試著回答一下,大家看看是不是這樣 1.原本語句列印 在a1中 這個應該不用解釋,這個時候只有a1中存在print方法。2.增加a2 print 函式後,由於a2繼承a1所以a2 print 函式覆蓋 overwritten a1 print 函式,所以這種情況下,對於a2及a2的所有子類的例項來...