我可以使用带有初始化列表参数的后增量运算符吗?例如:
template <class T> struct MyClass
{
MyClass(T& val): myvar(val++) {/*body*/}
protected: T myvar;
};
并且构造函数体中的代码会受到更改的影响吗?
答案 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
类型。