多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > effective C++ 讀書筆記 條款36-37

effective C++ 讀書筆記 條款36-37

來源:程序員人生   發布時間:2014-12-24 08:42:18 閱讀次數:2668次

條款36:絕不重新定義繼承而來的non-virtual函數

重要點:non-virtual函數都是靜態綁定

// 1241.cpp : 定義控制臺利用程序的入口點。 // #include "stdafx.h" #include <iostream> using namespace std; class Base { public: void func() { cout<<"Base::func()"<<endl; } }; class Derived : public Base { public: void func() { cout<<"Derived::func()"<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) { Derived test; Base* pB = &test; Derived* pD = &test; pB->func();//調用Base::func() pD->func();//調用Derived::func() /* 這里我們討論的不是關于隱藏的問題;上面pB指向1個子類,但是調用的是父類的func()函數,至于為何,由于不是虛函數,沒有virtual; 要明白1點:non-virtual函數 Base::func and Derived::func都是靜態綁定的,pB被聲明為1個人 pointer-to-Base,通過pB調用的non-virtual 函數永久是Base所定義的版本,即便pB指向1個類型為它的派生類的對象。 pD 調用的是Derived的函數版本,這里也能夠說成是隱藏,但是終究緣由是由于 靜態綁定。 1般 Derived dTest,dTest.func()這樣調用我們1般說是由于隱藏。對對象,而我們本例子當中對應的是指針或援用,是由于靜態綁定! */ getchar(); return 0; }


總上:任何情況下都不應當重新定義1個繼承而來的non-virtual函數;

對1個基類來講,如果1個函數定義為非虛函數,那末意味著這個函數其實不想改變,所以子類不應當繼承它,1個類當中的非虛函數,不變性凌駕于其特異性上。

 

條款37:絕不重新定義繼承而來的缺省參數值:

virtual函數是動態綁定,缺省參數值是靜態綁定;

 

// 1240.cpp : 定義控制臺利用程序的入口點。 // #include "stdafx.h" #include <iostream> using namespace std; class Shape { public: enum ShapeColor{Red,Green,Blue}; virtual void draw(ShapeColor color = Red) const = 0; }; class Rectangle:public Shape { public: virtual void draw(ShapeColor color = Green) const { cout<<"Rectangle"<<endl; } }; class Circle : public Shape { public: virtual void draw(ShapeColor color) const { cout<<"Circle"<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) { Shape* ps; Shape* pc = new Circle; Shape* pr = new Rectangle; pr->draw();//這里調用的是Rectangle的draw函數,但是函數參數color卻是Shape父類里面的參數 /* virtual函數是動態綁定,而缺省參數值卻是靜態綁定。 這就出現了上面的 調用1個定義于子類的virtual函數,同時卻使用base class為它所指定的缺省參數值。 pr的動態類型是Rectangle*,所以調用的是Ractangle的virtual函數,但是由于pr的靜態類型是Shape*,所以此 函數調用的缺省參數值卻是來自魚Shape Class. */ getchar(); return 0; }


總結:不要重新定義1個繼承而來的缺省參數值,由于缺省參數值是靜態綁定的,而virtual函數--你唯1應當覆寫的東西--卻是動態綁定!!

 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久草在线视频福利 | 成人精品美女隐私漫画 | 一级特黄特黄毛片欧美的 | 免费看的成人yellow视频 | 三级小说第一页 | 国产精品久久久久影视不卡 | 欧美精品黄页免费高清在线 | 日韩看片 | 一级成人a做片免费 | 中文字幕在线精品视频入口一区 | 亚洲欧美综合乱码精品成人网 | 欧美爱爱网站 | 亚洲福利一区 | 成人精品区 | 久久久亚洲欧美综合 | 最近中文字幕++中文 | aa级国产女人毛片好多水 | 亚洲高清在线观看视频 | 欧美日韩亚洲国产精品一区二区 | 五月天综合 | 国产精品日韩一区二区三区 | 亚洲精品国产福利一区二区三区 | 日本中文字幕免费 | 美女啪视频 | 国产手机在线αⅴ片无码观看 | 中文字幕18页 | 国产人伦视频在线观看 | 国产精品一区二区三区免费视频 | 久久看视频 | 久久精品免费一区二区三区 | 欧美精品一区二区久久 | 精品日韩一区二区三区视频 | 欧美黑人性受xxxx喷水 | 亚洲国产成a人v在线 | 在线精品视频成人网 | 91精品91久久久久久 | 狼人天堂网 | 免费精品美女久久久久久久久久 | 国产精品嫩草影院午夜 | 国产亚洲精品免费 | a天堂v |