두 클래스에서 클래스 상속이 정의하는 경우 특정 함수는 일어날 것

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

다음에 나타낸 바와 같이 : 클래스 C상속 모두 AB, 모두가 같은 함수를 정의, 이번 경우, 컴파일러 오류가 발생합니다.

         
         
1
4
5
6
(7)
8
9
(10)
         
         
testhir.cpp : 기능에서의 주요 INT (INT, CONST 문자 **) '
testhir.cpp : 26 : 7 : 오류 : 부재 'printR'에 대한 요청이 모호
c.printR ();
^ ~~~~~
testhir.cpp : 5 : 14 : 참고 : 후보는 다음과 같습니다 무효 :: printR ()
무효 중 ()
^ ~~~~~
testhir.cpp : 13 : 14 : 주 : B : 공극을 통해 ()
무효 중 ()
^ ~~~~~
         
         
1
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

추천

출처www.cnblogs.com/lijianming180/p/12046836.html