码迷,mamicode.com
首页 > 其他好文 > 详细

如果一个类同时继承的两个类都定义了某一个函数会怎样呢

时间:2019-12-16 09:44:59      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:search   ide   fun   art   container   str   gpo   toolbox   c11   

如果一个类同时继承的两个类都定义了某一个函数会怎样呢 | Code4Fun 盒子

入下面所示:类C同时继承了AB,并且两个都定义了相同的函数,如果这时候编译的话会得到错误.

1
2
3
4
5
6
7
8
9
10
testhir.cpp: In function ‘int main(int, const char**)’:
testhir.cpp:26:7: error: request for member ‘printR’ is ambiguous
c.printR();
^~~~~~
testhir.cpp:5:14: note: candidates are: void A::printR()
void printR()
^~~~~~
testhir.cpp:13:14: note: void B::printR()
void printR()
^~~~~~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
class A {
public:
void printR()
{
std::cout << "in A" << std::endl;
}
};
class B {
public:
void printR()
std::cout << "in B" << std::endl;
}
};
class C :B,A {
public:
};
int main(int argc, const char** argv) {
C c;
c.printR();
return 0;
}

如果在C中也实现了相同的函数的话,就可以正常编译获得结果:in C

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
class A {
public:
void printR()
{
std::cout << "in A" << std::endl;
}
};
class B {
public:
void printR()
{
std::cout << "in B" << std::endl;
}
};
class C :B,A {
public:
void printR()
{
std::cout << "in C" << std::endl;
}
};
int main(int argc, const char** argv) {
C c;
c.printR();
return 0;
}

呼呼呼山(http://code4fun.me)
2019-05-24 15:40:15

如果一个类同时继承的两个类都定义了某一个函数会怎样呢

标签:search   ide   fun   art   container   str   gpo   toolbox   c11   

原文地址:https://www.cnblogs.com/lijianming180/p/12046836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!