【原文写于2005年5月4日03:11星期三,注】
“虚成员变量”?!
注意!!没有“虚成员变量”,C++不会帮你多态
所以,如果在基类和派生类中定义了命名一样的成员变量,就要十分小心了
| 代码 |
#include using namespace std ; class A { public: A() { m_c = 'A' ; } char m_c ; } ; class B : public A { public: B() { m_c = 'B' ; } char m_c ; } ; int main() { A a ; B b ; A * p = &b ; cout << p->m_c << endl ; cout << ((B*)p)->m_c << endl ; return 0 ; } /************输出***************/ A B |
派生类中保存了自己的成员变量和基类的成员变量,具体引用哪个,根据类型决定
这与虚函数是完全不同的
本文通过一个具体的C++代码示例,展示了当基类和派生类中存在同名成员变量时可能出现的问题。强调了这与虚函数的多态行为不同,并提醒开发者要注意变量隐藏的现象。
830





