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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ 11 新特性(十四)C++类

發布時間:2023/12/3 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 11 新特性(十四)C++类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(一)綜述:類是我們自己定義的數據類型

設計時要考慮的角度:

  • 站在設計和實現的角度來考慮;
  • 站在使用者的角度考慮;
  • 父類,子類之間的考慮;
  • (二)explicit

    首先, C++中的explicit關鍵字只能用于修飾只有一個參數的類構造函數, 它的作用是表明該構造函數是顯示的, 而非隱式的, 跟它相對應的另一個關鍵字是implicit, 意思是隱藏的,類構造函數默認情況下即聲明為implicit(隱式).

    (三) inline const mutable this static

    在類定義中實現成員函數inline

    class pro { public://類內inlineint GetNum(){return num1 + num2;} private:int num1;int num2; };

    (四)成員函數末尾加const,告訴系統這個成員函數不會修改對象里任何成員變量的值等

    const 定義的類對象只能調用const結尾的成員函數;末尾const成員函數,可以被const對象和非const成員調用

    #include<iostream> using namespace std;class A { public:void init(int num){a = num;} protected:int a;};int main() {const A aa;aa.init(100); }

    (五)mutable

    使用mutable修飾的內容,永遠處于可被修改的狀態。

    class A { public:void init(int num)const {a = num;} protected:mutable int a;};

    (六)返回自身對象的引用,this

    class A { public:A& init(int num){this->a = num;return *this;} protected:int a;};

    編譯器負責把這個對象的地址(&class)傳遞給成員函數中一個隱藏的this形參;在系統角度看來,任何對類成員直接訪問都被看作成為是通過this做隱式調用的。

  • this指針只能在成員函數中使用,全局函數,靜態函數都不能使用this指針。
  • 在普通成員函數中,this是一個指向非const對象的const指針 (class * const this)。
  • 在const成員函數中,this是一個指向const對象的const指針 (const class *? const this)。
  • (七)static成員

    class A { public:A() {};~A() {};static int num ;//只聲明了,但是沒有分配內存static int getnum(){return num;}}; int A::num = 0;//分配內存并且類外初始化int main() {A aa;aa.num = 100;cout << A::num << endl;cout << A::getnum() << endl;}
  • 靜態成員變量在類內聲明的時候不能進行初始化操作,且沒有分配內存。需要在類外進行分配內存并且初始化。
  • 靜態成員變量和靜態成員函數可以通過類對象調用,也可以通過類名::(靜態成員函數/靜態成員)的方式調用。
  • static的特點:(可以修飾成員變量和成員方法)

    ? ? ? ? ?1.隨著類的加載而加載。

    ? ? ? ? ?2.優先于對象存在。

    ? ? ? ? ?3.被類的所有對象共享。(判斷是否用static修飾,只需要看其是否被所有對象共享)

    ? ? ? ? ?4.可以用對象名調用也可以直接通過類名調用。

    ? ? ? ? ?5.static修飾的內容與類相關稱之為類變量,非靜態修飾的內容稱之為實例變量。

    static使用注意事項:

    ? ? ? ? 1.靜態方法中沒有this關鍵字。(靜態修飾的內容是隨著類的加載而加載,this隨著對象的創建而存在,靜態修飾的內容比對象先存在)。

    ? ? ? ? 2.靜態方法只能訪問靜態的成員變量和靜態的成員方法

    ? ? ? ? ? ? ? ? ? 靜態方法:

    ? ? ? ? ? ? ? ? ? ? ? ?成員變量:只能訪問靜態變量。

    ? ? ? ? ? ? ? ? ? ? ? ?成員方法:只能訪問靜態成員方法。

    ? ? ? ? ? ? ? ? ?非靜態方法:

    ? ? ? ? ? ? ? ? ? ? ? ? 成員變量:即可以訪問靜態變量又可以訪問非靜態變量。

    ? ? ? ? ? ? ? ? ? ? ? ? 成員方法:既可以訪問靜態的方法又可以訪問非靜態的成員方法。

    ? ? ? ? ?靜態只能訪問靜態,非靜態可以訪問一切。

    靜態變量和成員變量的區別:

    ? ? ? ? ? 1.所屬不同:

    ? ? ? ? ? ? ? ? ?靜態變量:屬于類,類變量。

    ? ? ? ? ? ? ? ? ?成員變量:屬于對象,實例變量

    ? ? ? ? ?2.存儲位置不同

    ? ? ? ? ? ? ? ? ?靜態變量:方法區的靜態區。

    ? ? ? ? ? ? ? ? ?成員變量:堆內存。

    ? ? ? ? 3.生命周期不同

    ? ? ? ? ? ? ? ? 靜態變量:隨著類的加載而加載,隨著類的消失而消失。

    ? ? ? ? ? ? ? ? 成員變量:隨著對象的創建而存在,隨著對象的消失而消失。

    ? ? ? ?4.調用方式不同

    ? ? ? ? ? ? ? ? 靜態變量:可以通過對象名調用也可以直接通過類名調用。

    ? ? ? ? ? ? ? ? 成員變量:只能通過對象名調用。
    ?

    總結

    以上是生活随笔為你收集整理的C++ 11 新特性(十四)C++类的全部內容,希望文章能夠幫你解決所遇到的問題。

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