本文共 1599 字,大约阅读时间需要 5 分钟。
原文:
重载
成员函数被重载的特征:
#includeusing namespace std;class A {public: void show(int val) { cout << val << endl; } void show(double val) { cout << val << endl; }};int main(void) { A a; a.show(4); a.show(4.2); return 0;}
运行结果:
44.2
覆盖(重写)
覆盖是指派生类函数覆盖基类函数,特征是:
#includeusing namespace std;class A {public: virtual void show(int val) { cout << "A:" << val << endl; }};class B : public A {public: void show(int val) { cout << "B:" << val << endl; }};int main() { A a; a.show(4); A *p = new B; p->show(5); return 0;}
运行结果:
A:4B:5
隐藏
隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
#includeusing namespace std;class A {public: void show1(int val) { cout << "A:" << val << endl; } void show2(int val) { cout << "A:" << val << endl; } virtual void show3(int val) { cout << "A:" << val << endl; }};class B : public A {public: void show1(int val) { cout << "B:" << val << endl; } void show2() { cout << "B:" << endl; } virtual void show3() { cout << "B:" << endl; }};int main() { B b; b.show1(1); b.A::show1(2); b.show2();// b.show2(3); // 报错 b.A::show2(3); b.show3();// b.show3(4); // 报错 b.A::show3(4); return 0;}
运行结果:
B:1A:2B:A:3B:A:4
转载地址:http://sqsws.baihongyu.com/