面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换

区分初始化,赋值

 #include <iostream>
using namespace std; class Fi
{
public:
Fi() {}//1构造函数
}; class Fee
{
public:
Fee(int) {}//2构造函数
Fee(const Fi&) {}//3构造函数
}; void main()
{
Fee fee = ;//2构造函数
Fi fi;//1构造函数
Fee fum = fi;//3构造函数
fum = fi;//赋值 system("pause");
};

C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。

 #include <iostream>
using namespace std; class One
{
public:
One() {}
}; class Two
{
public:
explicit Two(const One&) {}
}; void f(Two) {} void main()
{
One one; //f(one);//error C2664: “void f(Two)”: 无法将参数 1 从“One”转换为“Two” f(Two(one));//构造一个类Two system("pause");
};
上一篇:vmware 三种网络模式


下一篇:BZOJ 1677: [Usaco2005 Jan]Sumsets 求和