c++對象概念


1、對象和類概念
    對象:實體,真實存在的個體。
          編譯器為之分配空間的變量。
          特征屬性,行為。
    類: 具有共性的實體的抽象。
          自定義的數據類型
    struct stu
    { 
        int age;
    };
    struct stu xiaoming;
    xiaoming就是對象,struct stu就是類。

2、C++對於結構的增強
    struct stu
    {
        char *name;  //數據
        int age;
        void fun()
        {
            printf("age\n",age);
        }
    };
    
    a.結構名可以直接做類型名。
        C:struct  stu xiaoming;
        C++:stu xiaoming;
    b.結構中可以定義函數。
    c.結構中對於數據和函數有權限的划分。(封裝性)
        public(公共的):類內和類外均可以訪問
        private(私有的):只能在類內訪問,類外無法訪問。
        protected(受保護的):只要不涉及到繼承,和private相同。
    補充:
        1.struct關鍵字定義的類型中如果成員前沒有權限符修飾,默認為public
        2.權限符生效范圍是上個權限符到下個權限符中間的部分。
        3.權限符可以出現任意次,但不建議這樣使用。
    注意:
        1、C++的結構除了上述增強外,其余基本和C中沒有差別,
            如:成員訪問方法,對齊原則等均一樣。
        2、類的成員函數應當在外部定義,內部給出聲明即可。外部定義時要指定函數的作用域。
    C++使用class關鍵字用於定義類,和struct關鍵字的用法相同。只不過class關鍵字默認的類型為private
    

3、對象的引用
    a.同一類的對象可以相互賦值。
        當類中有指針且有動態內存分配時,不要隨便賦值,有可能會出現問題。
    

4.構造函數
    構造函數主要用於在定義對象時,完成對象的初始化.
    每一個類都應該有一個構造函數,如果用戶沒有定義構造函數,
    編譯器會自動生成構造函數(參數和函數體為空的構造函數),如果用戶自定義了構造函數,那么編譯器不再提供默認的構造函數。
    
    特性:
        1.構造函數的名稱必須要與當前類的名稱相同。
        2.構造函數僅在定義對象時由系統調用,其他時間無法調用。
        3.構造函數可以有參數,也可以沒有參數,但是不允許有返回值。
        4.構造函數只能定義為公有成員,不能定義為其他。
    調用條件:
        1.定義對象時。
        2.為對象分配動態內存時。
        3.定義無名對象(稍作了解)
    注意:
        構造函數可以進行重載,以便用於不同形式的對象的定義。
        構造函數還可以使用默認的缺省參數。如果構造函數既有重載,又有缺省參數時,注意不要產生二義性。

 

5、const修飾的成員函數
    對於一般的成員函數來說,可以訪問和修改任意數據成員的值。
    如果不希望某個成員函數修改成員的值可以使用const修飾該函數。
    格式:
         返回值類型  函數名(參數列表)const
        void stu::getnum()const
        {
        }
    
    如果希望const修飾的成員函數還可以改變某個成員值,可以在該成員前使用mutable修飾。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM