2017-04-07 51 views
-6
class a { 
    a(int b); 
} 
main(){ 
    int b=5; 
    a tempa=b; 
} 

这是如何工作的?为什么参数可以通过赋值运算符在对象初始化时传递给构造函数?

我在HW中遇到过这个问题?

有人可以帮忙吗?谢谢。

+1

请发布一些你编译和运行的实际代码。 – molbdnilo

+0

Woah ...(){}的字体; ?'与代码的其余部分不匹配。你怎么把它拉开? (不是你应该,它看起来很奇怪) – Borgleader

+1

@Borgleader这些是全角字符。无论如何,对于等宽字体不太有用:) – Quentin

回答

3

构造函数与您的问题中显示的构造函数一样可以称为转换构造函数。

它允许编译器获取参数类型的值并将其转换为类的实例。

在你的榜样,行

a = b; 

等于

a = a(5); 

(那么,与既有的一类,并命名为a变量的冲突除外)

如果你想禁止它,你必须使构造函数显式

class A 
{ 
public: 
    explicit A(int); 
}; 

然后编译器不能像上面描述的那样使用转换的构造函数。你必须明确使用构造函数

+0

非常感谢,一些程序员老兄。 – ricecakebear

相关问题