-6
class a {
a(int b);
}
main(){
int b=5;
a tempa=b;
}
这是如何工作的?为什么参数可以通过赋值运算符在对象初始化时传递给构造函数?
我在HW中遇到过这个问题?
有人可以帮忙吗?谢谢。
class a {
a(int b);
}
main(){
int b=5;
a tempa=b;
}
这是如何工作的?为什么参数可以通过赋值运算符在对象初始化时传递给构造函数?
我在HW中遇到过这个问题?
有人可以帮忙吗?谢谢。
构造函数与您的问题中显示的构造函数一样可以称为转换构造函数。
它允许编译器获取参数类型的值并将其转换为类的实例。
在你的榜样,行
a = b;
等于
a = a(5);
(那么,与既有的一类,并命名为a
变量的冲突除外)
如果你想禁止它,你必须使构造函数显式
class A
{
public:
explicit A(int);
};
然后编译器不能像上面描述的那样使用转换的构造函数。你必须明确使用构造函数。
非常感谢,一些程序员老兄。 – ricecakebear
请发布一些你编译和运行的实际代码。 – molbdnilo
Woah ...(){}的字体; ?'与代码的其余部分不匹配。你怎么把它拉开? (不是你应该,它看起来很奇怪) – Borgleader
@Borgleader这些是全角字符。无论如何,对于等宽字体不太有用:) – Quentin