日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【c++】11.重写、覆盖、using、typedef

發(fā)布時(shí)間:2025/3/21 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【c++】11.重写、覆盖、using、typedef 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

重寫、覆蓋、using、typedef

注意,重寫和覆蓋并不是一個(gè)意思。

重寫:

重寫是虛函數(shù)在子類中重新定義,使用override,override也可以不寫,加上override是規(guī)范,語(yǔ)義更清晰明白它是重寫虛函數(shù)。

覆蓋:

覆蓋 是 子類定義 同名函數(shù) 覆蓋 掉父類同名函數(shù)。

父類如果定義某非虛函數(shù)func1(int,int),子類定義了函數(shù)func1(double),那么子類不能再調(diào)用func1(2,3),因?yàn)樽宇愔灰x了父類同名函數(shù),不管他們參數(shù)類型和個(gè)數(shù)是否不同,都會(huì)隱藏父類的同名函數(shù),相當(dāng)于覆蓋了父類的所有同名函數(shù)。

如果子類既要定義一個(gè)同名函數(shù),又想使用父類的這個(gè)同名函數(shù),c++11可以通過(guò)在子類中使用using 父類名::func1;即可。

同理,如果父類有幾個(gè)復(fù)雜的構(gòu)造函數(shù),子類想繼承父類所有構(gòu)造函數(shù),c++11可以在子類中使用 using 父類名::父類名;如:

class Base{public:Base();Base(const Base &){// 很復(fù)雜的一些初始化語(yǔ)句};func1(int,int); };class Child : Base{public:using Base::Base; //加上這句話,子類就繼承了父類的所有構(gòu)造函數(shù)using Base::func1(); // 加上這句話,就可以使用基類被覆蓋(隱藏)的所有同名函數(shù)func1了。func1(); //該定義會(huì)直接覆蓋掉基類所有同名函數(shù)func1. 解決辦法就是使用上面的using Base::func1(); };

using 的用法:

using namespace std; using namespaceA::namespaceB::func; // 調(diào)用命名空間B下的func()函數(shù),該聲明語(yǔ)句不要寫成func(),不能加括號(hào)。using anotherName = int; //取別名。一般用在某類型特別長(zhǎng)的時(shí)候,取個(gè)短點(diǎn)的別名。

注意區(qū)分typedef,typedef和using在取別名上作用基本一樣,只是順序不同,如:typedef int anotherName;
struct 和 class的作用基本一樣,但是常規(guī)用法是,struct訪問(wèn)類型默認(rèn)是public,并且一般用在把一些變量封裝成一個(gè)結(jié)構(gòu)體變量。class就是通常的用法。

總結(jié)

以上是生活随笔為你收集整理的【c++】11.重写、覆盖、using、typedef的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。