「C++の基礎 - 構造体」の版間の差分

81行目: 81行目:
     double area() {
     double area() {
       return width * height;
       return width * height;
    }
};
</syntaxhighlight>
<br><br>
== 匿名構造体 ==
C++11以降では、構造体に名前のない入れ子構造体を定義することができる。<br>
<syntaxhighlight lang="c++">
struct OuterStruct {
    int x;
    struct {
      int y;
      int z;
    };
};
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
OuterStruct os;
os.x = 1;
os.y = 2;  // 直接アクセス可能
</syntaxhighlight>
<br><br>
== 構造体のムーブセマンティクス ==
C++11以降では、構造体にムーブコンストラクタとムーブ代入演算子を定義することができる。<br>
<syntaxhighlight lang="c++">
struct Resource {
    std::unique_ptr<int> data;
    Resource(Resource&& other) noexcept : data(std::move(other.data))
    {}
    Resource& operator=(Resource&& other) noexcept
    {
      if (this != &other) {
          data = std::move(other.data);
      }
      return *this;
     }
     }
  };
  };