C++structとclassの違い
3689 ワード
C++ではclassとstructは2つの主な違いしかありません.デフォルトの継承権限.デフォルトではclassの継承はprivateで継承され、structはpublicで継承されます. メンバーのデフォルトのアクセス権.classのメンバーのデフォルトはprivate権限、structのデフォルトはpublic権限です.
他の特性はstructとclassが基本的に、厳密には同じです.
using namespace
struct
struct
int
次のように表示されます.にはメンバー関数があります.structはclassと同じ構造関数、解析関数、リロード演算子、友元クラス、友元構造、友元関数、虚関数、純虚関数、静的関数を含むことができます. デフォルトのアクセス権は異なりますが、public/private/protected修飾子を持つことができます. は、複雑な継承および多重継承を行うことができ、1つのstructは1つ以上のclassから継承することができ、逆も可能である. ここではC言語とは異なり、C言語のstructは本質的にデータを包装する文法メカニズムにすぎないことに注意してください.
Google C++プログラミングスタイルガイドでも、
データがある場合にのみstructを使用し、その他はclassを使用します.
C++では、キーワードstructとclassはほぼ同じ意味で、定義されたデータ型のためにどのキーワードを使用するかを合理的に選択するために、その人に意味を追加します.
structはネガティブオブジェクトのみを含む(passive objects)に用いられ、関連する定数を含む可能性があるが、データメンバー外にアクセスする関数機能はなく、アクセス機能は直接アクセスによって実現され、メソッド呼び出しを必要としない.ここで言及する方法は、構造関数、構造関数、Initialize()、Reset()、Validate()などのデータメンバーにのみ使用される方法を指す.
より多くの関数機能が必要な場合はclassが適しており、不確定であればclassを直接使用します.
STLを結合しない場合、シミュレーション関数(functors)および特性(traits)にはclassではなくstructを使用することができる.
一部のC++専門家はstructキーワードを使用するのではなく、class{public:}を常に使用することができると主張しています.しかし、実際にはstructはコードの中で広く使用されており、開発者はstruct(一部はC言語の影響によるものでもある)を使用して軽量レベルの厳密なパッケージを必要としない記録を表すことが多い.例えば、ファイルに書き込まれた記録やデータベーステーブル構造はstructで宣言されることが多い.classは主にオブジェクト向けのプログラミングに用いられる.
一般的にstruct構造を使用する必要がある主な理由は、次のとおりです.メンテナンスレガシーシステムを開発します. は、従来のAPIと通信する必要がある.
もちろんstructを使用すると、コードがより簡潔に見える場合があります.
struct
C++の高度な特性と文法の詳細が多すぎるため、一定のプログラミング規範に従う必要がある.
他の特性はstructとclassが基本的に、厳密には同じです.
01
// , struct class 。
02
// GCC 4.4.1
03
#include <iostream>
04
#include <string>
05
using namespace
std;
06
07
struct
bar
08
{
09
private :
//
10
int y;
11
public :
12
bar(){};
//
13
bar(
int a){ y = a;}
//
14
~bar();
//
15
void say();
16
virtual void func1() = 0;
//
17
};
18
19
struct
foo:
protected bar
//
20
{
21
private :
22
int x;
23
public :
24
foo(){};
25
void say(string msg) {cout<<msg<<endl;}
26
virtual int func2();
//
27
28
};
29
30
int
main() {
31
return 0;
32
}
次のように表示されます.
Google C++プログラミングスタイルガイドでも、
データがある場合にのみstructを使用し、その他はclassを使用します.
C++では、キーワードstructとclassはほぼ同じ意味で、定義されたデータ型のためにどのキーワードを使用するかを合理的に選択するために、その人に意味を追加します.
structはネガティブオブジェクトのみを含む(passive objects)に用いられ、関連する定数を含む可能性があるが、データメンバー外にアクセスする関数機能はなく、アクセス機能は直接アクセスによって実現され、メソッド呼び出しを必要としない.ここで言及する方法は、構造関数、構造関数、Initialize()、Reset()、Validate()などのデータメンバーにのみ使用される方法を指す.
より多くの関数機能が必要な場合はclassが適しており、不確定であればclassを直接使用します.
STLを結合しない場合、シミュレーション関数(functors)および特性(traits)にはclassではなくstructを使用することができる.
一部のC++専門家はstructキーワードを使用するのではなく、class{public:}を常に使用することができると主張しています.しかし、実際にはstructはコードの中で広く使用されており、開発者はstruct(一部はC言語の影響によるものでもある)を使用して軽量レベルの厳密なパッケージを必要としない記録を表すことが多い.例えば、ファイルに書き込まれた記録やデータベーステーブル構造はstructで宣言されることが多い.classは主にオブジェクト向けのプログラミングに用いられる.
一般的にstruct構造を使用する必要がある主な理由は、次のとおりです.
もちろんstructを使用すると、コードがより簡潔に見える場合があります.
1
struct
Compare {
bool operator() { ... } };
2
std::sort(collection.begin(), collection.end(), Compare());
C++の高度な特性と文法の詳細が多すぎるため、一定のプログラミング規範に従う必要がある.