【发布时间】:2011-09-19 18:37:12
【问题描述】:
在GoogleTechTalks video on Youtube 中,Bjarne Stroustrup 谈到了即将到来的 C++0x 标准。在视频中,他提到了以下示例:
#include <iostream>
struct Sick
{
Sick(double d) { std::cout << d << "\n"; }
explicit Sick(int i) { std::cout << i << "\n"; }
};
int main()
{
Sick s1 = 2.1;
Sick s2(2.1);
}
他的意思是在Sick(double) 之前而不是Sick(int) 之前放置explicit 关键字,以突出在某些上下文中与隐式转换相关的问题吗?
【问题讨论】:
-
我们应该如何知道 youtube 视频中某人的意思?重要的是你了解
explicit在这个例子中的用法。 -
哪一种都是合理的,这取决于你想用这个例子展示什么。
-
@Kerrek SB,你应该知道他的意思,因为他试图传达他的意思。
-
@ikdegami:该示例甚至没有使用
int版本,因此我高度怀疑该示例是否被准确复制或与要提出的观点相关。对 C++11 的额外提及进一步强化了视频谈话与 OP 的问题之间存在脱节。 -
伙计们,不要太认真。我只是好奇为什么将显式关键字放置在它所在的位置,而实际上似乎不需要它。尝试按原样编译示例,然后删除关键字。另外,我很确定 S 先生犯了一个简单的错误,就像我们时常犯的那样。
标签: c++ c++11 implicit-conversion explicit