精选文章

Android下使用TCPDUMP抓包Wireshark分析数据 如果想分析Android下某个APP的网络数据交互,需要在Android手机上抓包,最常用的抓包工具非tcpdump莫属,用tcpdump生成Wireshark识别的pcap文件,然后将pcap文件下载到电脑上,用电脑上的Wireshark加载pcap文件,通过Wireshark分析tcpdump抓取的数据。...

继续阅读

Mac下部署Android开发环境附加NDK 作为开发者,我们深有体会,不管是进行什么开发,为了部署开发环境,我们往往需要折腾很长时间、查阅很多资料才能完成,而且这次折腾完了,下次到了另一台新电脑上又得重新来过,整个部署过程记得还好,要是不记得又得重新开始,而且遇到Android这种GFW阻隔了开发资源下载链接的环境部署,又尤其浪费时间。所以这也是我写下这篇教程的初衷跟动力源泉,希望大家参考了这篇教程以后可以轻轻松松在Mac系统下将Android环境部署好。...

继续阅读

稍顯嚴肅的台中 坦白說,留在腦海中的台中影像並不多,來台灣之前在Booking上只訂到了台中的一家青旅,第一次住青旅有些不習慣,幹什麼都放不開。 同屋的一個男生是台灣人,不過一年中四分之三的時間在上海跟北京,這麼說來跟我還是比較有共同話題的。得之我準備花15天的時間環島,覺得太倉促了,他們大學時期花一個半月的時間也不見得能將台灣島給逛完。我只能無奈地表示,兩岸允許的簽證時間有限,自己的空閒時間更有限,只能用打卡式的旅行了,我深知正真地旅行應該慢下來,融入當地的環境,感受他們的風土人情,但第一次只能這樣作罷,以後換成民進黨上台,形勢會變成怎樣還不得而知,能否再過來還是個未知數。而我一向信奉的人生格言是秉燭夜遊,活在當下,所以,理解自己吧。...

继续阅读

為之留戀的新竹 來新竹之前本沒有對她有過高的期待,慢慢對她加分要從桃園火車站出發前往新竹開始。 在桃園火車站的候車月台上,有醒目的旅遊資料發放處,這上面的擺放的全是新竹的旅遊宣傳資料,關鍵的是資料做得非常簡潔易懂,而接下來一天的新竹之行就全部是依據這份寶典的指引來完成的。...

继续阅读

從桃園開始台灣之行 初到台灣恰逢華夏銀行系統升級,特意準備的華夏銀聯卡在桃園機場沒能派上用場,只好用建行在機場5000塊,算下來是很不划算的,但是沒辦法,誰叫我出機場就得花錢呢。 從機場打車到桃園的酒店,花了將近六百塊新台幣,到酒店時五點多,天已經漸亮了,洗漱完等到七點吃過早餐就開始補覺囉,一覺醒來已是中午,帶著換下來的衣服外出找自助洗衣店,順便覓食。...

继续阅读

  • Prev
  • Next

C++ Primer笔记之面向对象编程(上)

文章分类 : C++, C++Primer笔记, 应用与编程

1、面向对象编程的关键思想是多态性。

2、在C++中,基类必须指出希望派生类重定义哪些函数,定义为virtual的函数是基类期望派生类重新定义的,基类期望派生类继承的函数不能定义为虚函数。

3、在C++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这一事实是动态绑定的关键。用引用(或指针)调用的虚函数在运行时确定,被调用的函数是引用(或指针)所指对象的实际类型所定义的。  

4、保留字virtual只在类内部的成员函数声明中出现,不能用在类定义体外部出现的函数定义上。

5、protected成员可以被派生类对象访问但不能被该类型的普通用户访问。派生类只能通过派生类对象访问其基类的proteected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。

6、如果派生类没有重定义某个虚函数,则使用基类中定义的版本。

7、派生类中虚函数的声明必须与基类中的定义方式完全匹配,但有一个例外:返回对就类型的引用(或指针)的虚函数。派生类中的虚函数可以返回基类函数所返回类型的派生类引用(或指针)。

8、派生类重定义虚函数时,可以使用virtual保留字,但不是必须这么做。

9、因为每个派生类对象都有基类部分,类可以访问其基类的pubilc和protected成员,就好像那些成员都是派生类自己的成员一样。这一规则暗示着不可能从类自身派生出一个类。

10、最底层的派生类对象包含其每个直接基类和间接基类的子对象。

11、C++中的函数调用默认不使用动态绑定。要触发动态绑定,必须满足两个条件:第一,只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数;第二,必须通过基类类型的引用或指针进行函数调用。

12、倘若希望覆盖虚函数机制并强制函数调用使用虚函数的特定版本,可以使用作用域操作符。

13、在同一虚函数的基类版本和派生类版本中使用不同的默认实参几乎一定会引起麻烦。

14、我们经常误认为struct保留字定义的类与class定义的类有很大的区别,其实唯一的不同只是默认的成员保护级别和默认的派生保护级别。前者默认为public,后者默认为private。

15、友元关系不能继承。基类的友元(包括友元函数跟友元类)对派生类的成员没有特殊的访问权限。

16、如果基类定义了静态成员,则整个继承层次中只有一个这样的成员。无论基类派生出多少个派生类,每个静态成员只有一个实例。

17、如果从基类到派生类的转换是安全的,就可以使用static_cast强制编译器进行转换。或者使用dynamic_cast申请在运行时进行检查。

18、构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员。像任何类一样,如果类不定义自己的默认构造函数和复制构造成员,就将使用合成版本。

19、派生类的构造函数受继承关系的影响,每个派生类构造函数除了初始化自己的数据成员之外,还要初始化基类。

20、派生类构造函数的初始化列表只能初始化派生类的成员,不能直接初始化继承成员,通常是将基类构造函数包含在其构造函数列表中来间接初始化继承成员。

21、一个类只能初始化自己的直接基类。直接基类就是在派生类列表中指定的类。不过,派生类应该使用基类构造函数尊重基类的初始化意图,而不是在派生类构造函数函数体中对这些成员赋值。

22、如果派生类定义了自己的复制构造函数,该复制构造函数一般应显式使用基类复制构造函数初始化对象的基类部分。赋值操作符通常与复制构造函数类似:如果派生类定义了自己的赋值构造函数,则该操作符必须对基类部分进行显式赋值。

23、析构函数的工作与复制构造函数和赋值操作符不同:派生类析构函数不负责撤销基类对象的成员,即每个析构函数之复制清除自己的成员。对象的撤销顺序与构造顺序相反:首先运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数。

24、要保证运行适当的析构函数,基类中的析构函数必须为虚函数,如果析构函数为虚函数,那么通过指针调用时,运行哪一个析构函数将因指针所指对象类型的不同而不同。

除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。

本文地址:https://www.cpplive.com/html/1281.html

这里因为你的留言而存在!!!

You must be logged in to post a comment.