亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++結構體struct和類class區別詳解

2020-05-23 13:36:35
字體:
來源:轉載
供稿:網友

之前因為都在忙著畢業的開題答辯與投稿論文的事宜,一直沒有時間更新這個系列的文章。師弟看了上一篇霧中風景的文章,希望我繼續把這個系列的文章寫下去。坦白說,C++的特性很多,這也不是教學指南的文章,我會選取一些自己在學習C++過程之中值得探討的問題和大家聊一聊,來拋磚引玉。好的,今天先放點開胃菜,和大家聊聊struct與class關鍵字。

1.struct關鍵字:

在C++語言作為C語言的一個超集,是兼容C語言的所有語法規則的。C語言是我學習的第一門編程語言,我自然對于其中的語法規則十分熟悉,C語言之中可以使用struct關鍵字來將基礎數據類型進行組合,實現很多類型如圖,樹等高級的數據結構。

下面我們簡單回顧一下C語言之中的struct的用法:

struct Node { // 定義了一個樹節點 int val; struct Node* left; struct Node* right;};intmain() { struct Node root = {2,NULL,NULL}; //可以使用{a,b,c}的方式直接賦值 cout << root.val << endl; return 0;}

我們用了一段很簡單的代碼,就定義出了C語言之中樹的數據結構。顯然,使用struct Node作為類型定義十分冗長,我們這時候可以引出typedef這位仁兄。

typedef struct { int val; struct Node* left; struct Node* right;}Node ;intmain() { Node root = {2,NULL,NULL}; //可以直接用Node定義類型了 cout << root.val << endl; return 0;}

恩,這個用法很簡單吧。一開始學習C++時,我天真的以為這就是struct的用法了。但是我們不要忘了,C++可是一門 面向對象 的語言,C++的設計者利用了struct關鍵字添油加醋了。于是我在學習C++異常處理的部分,看到的這段代碼。

struct MyException : public exception { const char * what () constthrow () { return "C++ Exception"; }};

struct定義的結構是作為一個類來使用了,還可以繼承,包含函數了。沒錯,在C++中struct關鍵字搖身一變,已經不再是C語言中的吳下阿蒙了,它幾乎和class關鍵字的效果是一樣的。唯一不同的地方在于:

通過struct關鍵字實現的類,屬性,函數默認的訪問權限為public
通過class關鍵字實現的類,屬性,函數默認的訪問權限為private
所以如果上面的代碼需要將關鍵字從struct改為class,需要改動的內容也很簡單,就是顯式添加public的訪問權限:

class MyException : public exception{ public: const char * what () constthrow () { return "C++ Exception"; }};

2.非C++語言程序員的想法:

上述struct與class的區別又是一道很好的面試題目,但是?!我不喜歡這種設計,顯然,無論在何種情況下, 顯式的指明訪問權限 才是一個好的編碼習慣,利用語言本身的規則來做的訪問控制,并不是一種十分高明的方式。

Golang

定義類的方式如下,僅有一種:

type TreeNode struct { Val int Left *TreeNode Right *TreeNode }

依靠首字母的大小寫區分訪問控制,并沒有額外的坑。

Python

定義類的方式如下,也僅有一種:

class TreeNode:def__init__(self,x): self.val = x self.left = self.right = None

Python沒有訪問控制

Java

JAVA有很多類,枚舉類,匿名類,還有接口等關鍵字。但是沒有依靠定義類關鍵字來改變訪問控制屬性的方式。

Scala

類似于JAVA,通過伴生對象object代替了靜態類功能。總體大同小異,訪問控制更加靈活,也更加嚴格。

3.小結:

JAVA之父曾經說過: 我遺漏了操作符重載相當個人選擇因為我見過太多的人在 C++ 濫用它。

所以Java至今也沒有支持操作符重載。(語法糖寫了一時爽,濫用之后會帶來很多團隊協作的問題)

所以今天這篇文章表達了一下我個人的觀點,C++之中有太多紛繁復雜的特性了,很多時候我們可能會因為一時的便利而使用了一些很不好的特性。struct就應該如同字面的內容一樣,是一個簡單使用的結構體,而如果我們要使用類,還是應該拿起class關鍵字。至于訪問權限,就四個字 顯式指定 。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩一区二区在线播放| 亚洲欧美综合v| 亚洲人av在线影院| 国产精品成人一区| 一区二区三区四区视频| 亚洲第一页在线| 亚洲人成电影网站色| 欧美一区二区三区精品电影| 亚洲国产中文字幕久久网| 亚洲欧美色婷婷| 国产一区二区三区视频免费| 国产精品99一区| 91精品久久久久久久久不口人| 成人性生交xxxxx网站| 精品亚洲国产视频| 97婷婷涩涩精品一区| 日韩国产在线看| 久久国产精彩视频| 久久69精品久久久久久久电影好| 日韩av影视在线| 久久影院在线观看| 伊人精品在线观看| 亚洲精品电影网| 91亚洲va在线va天堂va国| 亚洲性夜色噜噜噜7777| 亚洲国产成人在线视频| 欧美成人午夜激情视频| 成人黄色午夜影院| 一个人看的www欧美| 日本精品一区二区三区在线播放视频| 91视频免费网站| 国产精品专区h在线观看| 国产综合久久久久| 日韩电影中文字幕在线观看| 欧美多人乱p欧美4p久久| 久久五月情影视| 色综合久久天天综线观看| www.国产精品一二区| 日韩一中文字幕| 狠狠久久五月精品中文字幕| 另类天堂视频在线观看| 美女精品久久久| 两个人的视频www国产精品| 亚洲精品福利在线观看| 久久精品电影网| 91成人福利在线| 欧美性黄网官网| 亚洲色图激情小说| 精品国产福利视频| 91夜夜揉人人捏人人添红杏| 国产99久久久欧美黑人| 欧美成人一区在线| 午夜精品久久久久久99热| 亚洲精品美女久久久| 久久精品99国产精品酒店日本| 久久久久久久久久久91| 中文字幕亚洲专区| 精品国产老师黑色丝袜高跟鞋| 精品视频久久久久久| 国产成人91久久精品| 欧美一级黑人aaaaaaa做受| 亚洲精品视频免费| 91精品国产91久久久久久吃药| 日韩在线观看免费全| 久久久国产影院| 亚洲成人在线网| 亚洲免费视频网站| 国产精品久久久久久一区二区| 欧美亚洲在线观看| 日韩美女免费观看| 成人黄色短视频在线观看| 久久亚洲影音av资源网| 色偷偷av一区二区三区乱| 欧美高清激情视频| 色噜噜狠狠色综合网图区| 中文字幕亚洲一区二区三区五十路| 中文字幕亚洲第一| 黄色成人在线免费| 亚洲a在线播放| 欧美日韩亚洲天堂| 亚洲欧美在线一区二区| 韩国精品美女www爽爽爽视频| 欧美黑人狂野猛交老妇| 亚洲精品国产精品自产a区红杏吧| 欧美久久精品一级黑人c片| 97精品国产91久久久久久| 国语对白做受69| 国产一区二区三区欧美| 国产精品手机播放| 亚洲欧美在线x视频| 成人激情在线播放| 成人午夜激情免费视频| 亚洲电影免费观看高清完整版在线| 青青草国产精品一区二区| 久久久99久久精品女同性| 亚洲一区二区三区视频播放| 亚洲精品黄网在线观看| 秋霞成人午夜鲁丝一区二区三区| 国产成人精品av| 一色桃子一区二区| 668精品在线视频| 97久久精品人搡人人玩| 亚洲精品久久久久久久久久久| 高清亚洲成在人网站天堂| 一本色道久久综合亚洲精品小说| 亚洲国产成人精品一区二区| 18一19gay欧美视频网站| 欧美大码xxxx| 在线免费观看羞羞视频一区二区| 亚洲精品免费av| 亚洲第一区中文99精品| 亚洲欧美日韩直播| 中文字幕日韩精品在线观看| 亚洲精品女av网站| 日本高清久久天堂| 国产一区深夜福利| 欧美午夜激情小视频| 久久久国产精品x99av| 亚洲网站在线观看| 一区二区三区天堂av| 国产裸体写真av一区二区| 77777少妇光屁股久久一区| 国产免费一区二区三区香蕉精| 97久久久免费福利网址| 亚洲91精品在线| 欧美性猛交xxxx免费看| 色婷婷综合久久久久中文字幕1| 日韩免费不卡av| 日本久久久久久久| 97精品视频在线播放| 国产美女精品视频免费观看| 亚洲男人第一av网站| 欧美精品一区二区三区国产精品| 国产精品mp4| 在线视频国产日韩| 欧美限制级电影在线观看| 中文字幕亚洲第一| 中文字幕久久亚洲| 亚洲欧洲成视频免费观看| 亚洲视频在线免费看| 国产亚洲视频中文字幕视频| 亚洲日韩中文字幕在线播放| 亚洲第一精品久久忘忧草社区| 上原亚衣av一区二区三区| 亚洲奶大毛多的老太婆| 国产欧美va欧美va香蕉在线| 国产精品入口夜色视频大尺度| 国产ts一区二区| 国产精品成人一区| 成人黄色av免费在线观看| 最好看的2019的中文字幕视频| 曰本色欧美视频在线| 精品国产一区二区三区四区在线观看| 日韩一区二区福利| 欧美精品久久久久久久免费观看| 国产日韩欧美综合| 精品美女永久免费视频| 欧美亚洲另类制服自拍| 日韩av片电影专区| 欧美电影在线观看高清| 91精品91久久久久久| 法国裸体一区二区| 国产精品成人免费电影| 亚洲欧美日韩在线高清直播|