class Rational1 {
public:
Rational1(int intPart= 1, int dotPart = 0) {
intPart_ = intPart;
dotPart_ = dotPart;
}
Rational1& operator=(const Rational1& src) {
intPart_ = src.intPart_;
dotPart_ = src.dotPart_;
return *this;
}
private:
int intPart_;
int dotPart_;
};
1. 对象定义
Rational r1(100);
Rational r2 = Rational(100);
Rational r3 = 100;
2. 隐式类型转换
Rational r; r = 100; 调用operator=时隐式调用 Rational1(int intPart= 1, int dotPart = 0) 构造
void g(const string& s); g("safda"); 隐式调用 string(char*) 构造
3. 传值传参,返回对象时
总结:
当传入值类型与定义值不符时,编译器会自行调用构造函数产生临时对象。
1. 尽量用传引用或指针
2. 重载相应函数,增加传入值类型。