web-dev-qa-db-ja.com

C ++構造体の関数

通常、次のようにC++構造体の変数を定義できます。

struct foo {
  int bar;
};

構造体の関数も定義できますか?これらの関数をどのように使用しますか?

72
John

はい、structは、デフォルトのアクセスレベル(メンバー単位および継承単位)を除いて、classと同じです。 (およびテンプレートで使用する場合、classは追加の意味を持ちます)

クラスによってサポートされるすべての機能は、結果として構造体によってサポートされます。クラスに使用するのと同じメソッドを使用します。

struct foo {
  int bar;
  foo() : bar(3) {}   //look, a constructor
  int getBar() 
  { 
    return bar; 
  }
};

foo f;
int y = f.getBar(); // y is 3
115
Luchian Grigore

構造体は、クラスのような機能を持つことができます。唯一の違いは、デフォルトで公開されていることです。

struct A {
    void f() {}
};

さらに、構造体にはコンストラクターとデストラクターを含めることもできます。

struct A {
    A() : x(5) {}
    ~A() {}

    private: int x;
};
30
0x499602D2