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

Using the post-increment operator in initialization list

本文关键字:运算符 初始化 列表      更新时间:2023-10-16

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

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

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

可以。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

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