C++之virtual 方法

来源:互联网 发布:java redis实战 pdf 编辑:程序博客网 时间:2024/04/29 21:26

1、例子1

#include <iostream>class A{public:    const char* fetchClassName() { return "A"; }};class B: public A{public:    const char* fetchClassName() { return "B"; }};int main(void){   B obj_b;   A &obj_a = obj_b;   std::cout << obj_a.fetchClassName() << "\n";}


运行结果
A


2、例子2

#include <iostream>class A{public:    virtual const char* fetchClassName() { return "A"; }};class B: public A{public:    virtual const char* fetchClassName() { return "B"; }};int main(void){   B obj_b;   A &obj_a = obj_b;   std::cout << obj_a.fetchClassName() << "\n";}



运行结果
B


3、例子3

#include <iostream>class A{public:    virtual const char* fetchClassName() { return "A"; }};class B: public A{public:     const char* fetchClassName() { return "B"; }};int main(void){   B obj_b;   A &obj_a = obj_b;   std::cout << obj_a.fetchClassName() << "\n";}


运行结果
B


4、例子4

#include <iostream>class A{public:    virtual const char* fetchClassName() { return "A"; }};class B: public A{public:     const char* fetchClassName() { return "B"; }};class C: public B{public:     const char* fetchClassName() { return "C"; }};int main(void){   C obj_c;   A &obj_a = obj_c;      std::cout << obj_a.fetchClassName() << "\n";}


运行结果
C


5、例子5

#include <iostream>class A{public:    virtual const char* fetchClassName() { return "A"; }};class B: public A{public:     const char* fetchClassName() { return "B"; }};class C: public B{public:      const char* fetchClassName(int a) { return "C"; }};int main(void){   C obj_c;   A &obj_a = obj_c;   std::cout << obj_a.fetchClassName() << "\n";}


运行结果
B

reason:You can see that the prototype of the function in Class ‘C’ is different in the above sample code.

0 0
原创粉丝点击