C++のstructとclassは非常によく似ていて、構造体のメンバーはデフォルトでパブリックアクセスを持ち、クラスメンバーはプライベートアクセスなどをしています。しかしクラスインスタンスを中括弧で初期化する
、構造体のインスタンスは次のように初期化することができるので:
struct MyStruct{
int a;
int b;
int c;
};
MyStruct s1 = {1, 2, 3}; //a=1, b=2, c=3
MyStruct s2 = {}; //a=0, b=0, c=0
それはC++のクラスのための同じをしても安全ですか?
class MyClass{
int a;
int b;
int c;
};
MyClass c1 = {1, 2, 3}; //a=1, b=2, c=3
MyClass c2 = {}; //a=0, b=0, c=0
質問:たとえば、私たちはコンストラクタ(複数可)を使用することができます承知しています、私は、構造体のインスタンスのようなクラスのインスタンスを初期化した場合、私は知っておくべきすべての落とし穴はありますか?この方法を使用してデータメンバーをデフォルト値(たとえばintの場合は0、ポインタの場合はnull)に初期化すると安全ですか?
C++では、デフォルトのアクセス指定子を除き、クラスと構造体に違いはありません。 – NathanOliver
@ NathanOliverしたがって、中括弧を使用してクラスインスタンスを初期化するのが安全だと思いますか? – user3437460