的ISO/IEC 14882, Programming language – C++广泛阅读后我为什么需要const
隐式转换为用户定义的类型与单个参数的构造类似于下面为什么const为隐式转换?
#include <iostream>
class X {
public:
X(int value) {
printf("constructor initialized with %i",value);
}
}
void implicit_conversion_func(const X& value) {
//produces "constructor initialized with 99"
}
int main (int argc, char * const argv[]) {
implicit_conversion_func(99);
}
第4线开始仍然不确定3
当且仅当声明T t = e时,才能将表达式e隐式转换为类型T;对于一些发明的临时变量t(8.5)来说是良构的。某些语言结构要求将表达式转换为布尔值。出现在这样的语境中的表达式e据说被上下文转换为bool,并且当且仅当声明bool t(e);对于一些发明的临时变量t(8.5)来说是良构的。隐式转换的效果与执行声明和初始化相同,然后使用临时变量作为转换的结果。如果T是左值引用类型(8.3.2),则结果为左值,否则为右值。当且仅当初始化将它用作左值时,表达式e被用作左值。
以下,我发现就有关用户定义的类型的初始化的部分在8.5线6
如果程序要求一个const限定的类型T,T的对象的默认的初始化应该是一个带有用户提供的默认构造函数的类类型。
最后,我结束了在12.3第2行有关用户定义的转换其中规定只有在它们是明确的(10.2,12.3.2)
用户定义的转换被应用。
不用说,10.2和12.3.2没有回答我的问题。
- 有人能摆脱对隐式转换什么样的影响
const
有一些轻? - 使用
const
是否使每12.3行2的转换“明确”? const
会影响左值与左值在第4节中讨论过吗?
难道你不喜欢C++吗? – 2010-10-09 04:02:15