溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++類怎么使用

發(fā)布時間:2021-11-29 16:33:39 來源:億速云 閱讀:120 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“C++類怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

下面用實際的案例來說明C++類概念的問題,在世界中,經(jīng)常有屬于同一類的對象,比如,你使用的電腦只是世界上很多電腦中的一臺而已,面向對象軟件中,也有很多共享相同特征的不同的對象。

首先一個沒有明顯的含有成員的C++,它的大小不是0,因為實際上它不是空的,它被編譯器安插了一個char,為的是使這個C++的兩個對象能夠在內(nèi)存中被分配***的地址.至于兩個派生的C++Y和Z,因為語言本身造成的負擔,還有編譯器對于特殊情況進行的優(yōu)化處理,再有Alignment的限制,因此結果變成了8.這個8是怎么組成的?

typedef int length; //zai   class point3d   {   public:   //length被決議成global typedef 也就是int   //_val被決議成Point3d::_val   void mumble(length val){_val=val;}   length mumble(){return _val;}   //……   private:   //length必須在這個class對它的***個參考操作之前被看見   //這樣聲明將使先前的參考操作不合法   typedef float length;   length _val;   //……

不過需要注意的是不同的編譯器Y和Z大小的結果也會不同.因為新的編譯器會將一個空的virtual base class看做是派生對象的開頭部分,因此派生有了member,因此也就不必分配char的那一個bytes.也就用不到填補的3個bytes,因此有可能在某些編譯器中

Point3d   Point3d::translate(const Point3d &pt)   {   x+=pt.x;   y+=pt.y;   z+=pt.z;   }

雷神1、4、8……的說了一堆,也不知大家明白與否,但是這第三章,讀起來確實比前兩章順多了。我們繼續(xù)我們來看Data Member 的Binding,現(xiàn)在我們對數(shù)據(jù)成員的綁定只需要記住一個防御性風格:始終把嵌套型的聲明放在class的開始部分,這樣做可以確保非直覺綁定的正確性??聪旅娴囊粋€例子:

class X{};   class Y:public virtual class X{};   class Z:public virtual class X{};   class A:public Y,public Z{};

怎么成了抄書了,雷神也不知不覺,可能是在這章的理解上比較容易些吧,不用去想個看的見摸的著的東西比劃。好象小朋友學算術。一位數(shù)的計算不用掰手指頭,可是兩位數(shù)或者三位數(shù)的計算,手指頭加上腳指頭還是不夠。學習就是這么回事。理解力和抽象能力很重要?;貋砝^續(xù)學習。

通過這一章我還知道了。數(shù)據(jù)成員的布局。數(shù)據(jù)成員的存取。并且對Static data members有了進一步的了解,在class的生命周期中,靜態(tài)成員被看作是全局變量,每一個member的存取不會導致任何空間或效率上的額外負擔。不論是從一個復雜的繼承關系中繼承還是直接聲明的。

Static data member都只會有一個實體。并且有著非常直接的存取路徑。另外如果兩個C++都聲明了一個相同名字的靜態(tài)成員變量,那么編譯器會通過一種算法,為我們解決名字沖突的問題。而非靜態(tài)的成員變量的存去實際上是通過implicit class object(this指針)來完成的。

“C++類怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

c++
AI