使用初始化列表中的后增量运算符
Using the post-increment operator in initialization list
我可以将后增量运算符与初始化列表参数一起使用吗?例如:
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
的类型。
相关文章:
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 为什么初始化时没有调用重载赋值运算符?
- 使用运算符"="在C++中用值初始化对象
- 由于没有使用赋值运算符,映射的值是如何初始化的?
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 在未初始化的变量上使用复合赋值运算符(+=, ..)不是C++中的UB?
- std::unordered_map 运算符 [] 是否对非现有密钥进行零初始化?
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 未找到匹配的运算符删除;如果初始化引发异常,内存将不会被释放
- C++ 类型 'complex<double>' 中类中的复杂初始化不提供调用运算符
- 模板流运算符重载错误:引用初始化无效,与basic_istream和basic_ifstream之间的差异有关
- 统一初始化是隐式发生的,即使 int 强制转换运算符是使用 explicit 关键字声明的.原因是什么?
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么
- 复制 CTOR 与赋值运算符以初始化对象(性能)
- 为什么我可以在不使用赋值运算符的情况下使用列表初始化普通数组
- 使用三元运算符初始化类对象错误
- 使用三元运算符初始化引用变量
- 使用new运算符初始化数组
- 使用相等运算符初始化对象
- 使用和不使用新运算符初始化对象