2

重複の可能性:
C++ でクラスと構造体を使用する必要があるのはいつですか?

C++ を使用してプログラムを作成するときに、CLASS 宣言ではなく STRUCT 宣言を使用する必要があるのはいつですか?

  1. 一度もない !!?
  2. 何か…気分が良くなるものはありますか?
4

2 に答える 2

5

この 2 つの唯一の違いは、メンバーが非公開であるstructのに対し、デフォルトで公開であることです。class

私のルールはstruct、読み取り/書き込みに関する特別なセマンティクスのない関連データの塊を意味するときに使用することです。classより意味のあるリッチなセマンティクス (読み取りメソッド) でデータをラップしたり、必要な保護を提供したり、より抽象的なものを実装したりする場合に使用します。

于 2012-12-17T17:49:37.157 に答える
4

デフォルトのアクセス レベルを除いて、 astructと aclass完全に同等です。

違いは主にプログラマーの頭の中にあることがわかりました。慣例により、私たちは通常、structs を使用して小さなオブジェクトをまとめ、複雑な機能を使用せずに使用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.
};
于 2012-12-17T17:50:02.753 に答える