-2
class const_buffer
{
public:
  /// Construct an empty buffer.
  const_buffer()
    : data_(0),
      size_(0)
  {
  }

  /// Construct a buffer to represent a given memory range.
  const_buffer(const void* data, std::size_t size)
    : data_(data),
      size_(size)
  {
  }

  const void* data_;
  std::size_t size_;
}

data_ は void* として定義され、size_ は std::size_t 型です。それらは関数ではありませんが、なぜ data_(data), size_(size) を実行できるのでしょうか? パラメータを取り、関数のように振る舞うように見えます。

4

1 に答える 1

2

関数に最も近いアナロジーは、これらの型のコンストラクターを呼び出して初期化することです。これは単なる構文であり、関数のように「動作」しません。

于 2013-08-30T16:08:09.917 に答える