下面的程序输出什么?为什么?
class Base
{
public:
int a;
Base() { a = 1; }
void println() { cout<<a<<endl;; }
};
class Child : public Base
{
public:
int a;
Child() { a = 2; }
};
int main()
{
Child c;
c.println();
cout<<c.a<<endl;
}
答案:
1,
2
c.println()调用父类的函数,父类里面定义的函数不可能看到子类当中的成员变量,
所以肯定是输出父类的a;
cout<<c.a;子类与父类有同名成员变量,子类的覆盖父类的。