今天看到一段程式,乍一看以為寫錯了。寫了個原型程式,又想了想了,發現原來是對的。 看下面的原型程式:
#include using namespace std;
class a ;
class b: public a ;
void b::f()
int main()
這段**可以通過編譯並執行成功嗎?
答案是可以的。
f()雖然是b中的私有函式,卻是基類a中的公有函式。在編譯期,編譯器並不知道pa->f()其實指向的是子類的私有函式,故能通過編譯;而在執行期,只是簡單通過虛函式表的相應位置的內容取到**段的入口並執行相應**,並不會在執行期檢查是否私有。故編譯執行都能成功。相反,如果pa是b *而不是a*,則是在編譯期就會報錯了。
只是仍然不太明白的是,為何程式要設計成這樣?讓介面類暴露介面,而讓實現類的具體實現不會被對實現類的直接呼叫而呼叫成功。難道這正是設計初衷嗎?
一段小程式 3
做個題目練練手,不然c語言都忘記了。設計一程式實現功能,處理字串a,處理規則是 只要b字串裡面有的字母,不分大小寫,一律從a字串中刪掉。1 請畫出此演算法的流程圖 2 請用c語言編寫對應的 include stdio.h include stdlib.h include string.h defin...
重要的一段
2006 6 23 22 44 00 重要的一段 這幾個月都用在開發心電監護系統上了,終於告一段落,倍感輕鬆。欣慰的是,有了成果,並且成果正走在產品化路上。5月31日,孕育 設計監護儀樣機結構和pcb 6月7日,生日 pcb板製好,開始焊接和除錯 6月17日,tata,監護儀終於可以見人了。介紹一下...
一段程式看懂位元幣原理
自從位元幣火起來以後,網上對位元幣的解釋可謂汗牛充棟,紛繁複雜。但對於程式設計師來說,最直接的方式莫過於直接看程式 了。嫌位元幣 龐雜沒關係,我找到一段簡明扼要的 用來理解位元幣再好不過了。以下這段程式 知乎上wu hao的回答。function mine function sendbtc amou...