C++ Primer Chapter 14-5

来源:互联网 发布:mysql mac 安装包下载 编辑:程序博客网 时间:2024/06/05 16:52
1:重载函数转换构造函数也会造成二义性
  1. f(const A &);//(1)
  2. f(const B &)//(2)
  3. class A
  4. {
  5. A(int);
  6. }
class B
{
B(int);
}
int a = 9;
f(a); // 这里就有二义性
 a 既可以调用 (1) ,也可以调用 (2),二义性。当然我们都可以显示的指出来来消灭二义性

2:如何判断二义性:
通过列出从源到目标的转换路径,然后比较级别,如果最合适的路径最高级别路径两条及两条以上,则有二义性。

3:表达式中运算符函数候选集,包括成员函数非成员函数

4:如果我们在类中重载了运算符,同时有定义了目标算术类型的类型转换,那么就存在重载运算符内置运算符的二义性问题。详见page522

5:基类一般定义所有类都有的共同属性虚函数就实现了基类子类的区别。

6:子类的虚函数如果重新定义,那么子类就会调用自己的函数,如果没有定义,那么就调用父类的

7:在使用基类的引用指针调用一个虚函数时会发生动态绑定

8:

0 0
原创粉丝点击