2012-12-17 29 views
-1

可能重複:
When should you use a class vs a struct in C++?當使用結構上類在C++

時,如果有的話,應該一個用編寫程序時使用結構聲明,而不是類的聲明C++?

  1. 從不!! ?
  2. 任何事情......無論什麼讓人感覺更好?
+1

Arghhhh ......我討厭當我的名字被放在旁邊的一票,我沒有選擇關閉原因。 –

+0

請在此處閱讀struct和class的詳細信息:https://stackoverflow.com/questions/54585/when-should-you-use-a-class-vs-a-struct-in-c/47168608#47168608。基本上我使用結構來構造數據結構,其成員可以採取任何價值,這樣更容易。 – Frrank

回答

3

兩者的唯一區別在於默認struct是公開的,而class成員是私人的。

我的規則是使用struct當我的意思是一堆相關數據沒有任何特殊的語義讀/寫它們。當我打算用更豐富的語義(讀取方法)來包裝更有意義的數據時,使用class,提供任何所需的保護或實現更抽象的內容。

2

除了默認訪問級別,structclass完全等效

我發現差別主要在程序員的頭腦中 - 按照慣例,我們通常使用struct s將沒有複雜功能的小對象組合在一起,例如,只有3個成員的Point - 座標。 POD類型。

另一方面,我們通常使用class es來包含更大的對象,具有複雜的功能和相當大的接口。

例如:

struct Point { 
    int x,y,z; 
}; 

class Shape{ 
    std::vector<Point> corners; 
public: 
    Shape(const std::vector<Point> corners); 
    double getVolume(); 
    double getArea(); 
    bool isConvex(); 
    //etc. 
};