結構體和類,構造函數

1.C的結構體和C++結構體的區別
(1)C的結構體內不允許有函數存在,C++允許有內部成員函數,且允許該函數是虛函數。
     所以C的結構體是沒有構造函數、析構函數、和this指針的。
(2)C的結構體對內部成員變量的訪問權限只能是public,而C++允許public,protected,private三種。
(3)C語言的結構體是不可以繼承的,C++的結構體是可以從其他的結構體或者類繼承過來的。
 C++,結構體除了可以包含變量外,還可以包含函數,能繼承,能實現多態
2.C++的結構體和C++類的區別-成員的訪問控制差異
(1)C++結構體內部成員變量及成員函數默認的訪問級別是public,
     而C++類的內部成員變量及成員函數的默認訪問級別是private。
(2)C++結構體的繼承默認是public,而c++類的繼承默認是private。

private私有成員只能被其自身成員訪問
protected保護成員只能在該類的派生類類體中使用
類的友元可以訪問類的任何成員
友元類的所有成員函數都是友元函數,
提供了不同類或對象的成員函數之間,類的成員函數與一般函數之間的數據共享
友元函數定以後可以訪問該類的所有對象的成員
必須要在類定義時聲明,friend double dist(point &m, point &n);
友元成員-一個類的成員函數是另一個類的友元函數,
友元類-class girl;

在類中定義成員變量時,不能賦值,構造函數的主要功能是爲對象分配空間,也可以爲類成員變量賦值
構造函數的重載,boy(int a, int b){...}
拷貝構造函數-用一個已經存在的對象來初始化該類的新對象,point(point &p); //拷貝函數聲明
    調用情況:1用類的對象去初始化給類的另一個對象,boy x2(x1);
        2函數的形參是對象,調用函數進行形參和實參的結合
      3函數的返回值是對象,函數執行完返回調用者
析構函數-被聲明是公有成員,釋放分配給對象的內存空間,~boy(){...}
沒有參數,沒有返回值,一個類中只能有一個析構函數
在構造函數中用new分配空間,在析構函數中用delete釋放空間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章