在初始化列表中使用后增量运算符

时间:2013-07-16 16:28:22

标签: c++ constructor initializer-list post-increment

我可以使用带有初始化列表参数的后增量运算符吗?例如:

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

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

1 个答案:

答案 0 :(得分: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类型。