操作符重载 2

来源:互联网 发布:沙特和伊朗知乎 编辑:程序博客网 时间:2024/05/21 22:21

1) 用户定于的转换序列可以被编译器隐式调用,但是只能调用一次,在调用用户定义的转换前后,可以分别调用一次标准转换序列。

2) 隐式转换导致的二义性,可以在构造函数前加上explicit,防止隐式调用构造函数。

class Num

{

public:

operator SmallInt();

};

 

classSmallInt

{

public:

SmallInt(Num &);//加上ecplicit
};

 

void add(SmallInt);

 

int main

{

Num number;

add(number);//二义性,导致error

}

3) 操作符重载,是用友元函数还是用成员函数? 如果操作符左边的参数不是当前类对象,建议使用友元函数,因为成员函数要求操作符左边的对象一定是当前的类对象。friend 关键字只能出现在函数声明处,而不能出现在函数定义处。

原创粉丝点击