2

我可以将后增量运算符与初始化列表参数一起使用吗?例如这样的:

template <class T> struct MyClass
{
  MyClass(T& val): myvar(val++) {/*body*/}
  protected: T myvar;
};

构造函数主体中的代码会受到更改的影响吗?

4

1 回答 1

1

是的你可以。该myvar成员将具有val增量之前的值。

我们应该考虑到 val 将有一个支持后自增运算符的类型。

template <class T> struct MyClass
{
    MyClass(T val): myvar(val++) {/*body*/}
//          ^
protected:
    T myvar;
};

MyClass<int> foo( 1 );

// Here myvar will have the value 1

并且不要忘记val传递给MyClass构造函数的类型。

于 2013-07-16T16:30:32.870 回答