日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2025/3/21 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【c++】11.重写、覆盖、using、typedef 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

重寫、覆蓋、using、typedef

注意,重寫和覆蓋并不是一個意思。

重寫:

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

覆蓋:

覆蓋 是 子類定義 同名函數 覆蓋 掉父類同名函數。

父類如果定義某非虛函數func1(int,int),子類定義了函數func1(double),那么子類不能再調用func1(2,3),因為子類只要定義了父類同名函數,不管他們參數類型和個數是否不同,都會隱藏父類的同名函數,相當于覆蓋了父類的所有同名函數。

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

同理,如果父類有幾個復雜的構造函數,子類想繼承父類所有構造函數,c++11可以在子類中使用 using 父類名::父類名;如:

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

using 的用法:

using namespace std; using namespaceA::namespaceB::func; // 調用命名空間B下的func()函數,該聲明語句不要寫成func(),不能加括號。using anotherName = int; //取別名。一般用在某類型特別長的時候,取個短點的別名。

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。