基类成员变量与子类成员变量同名的问题
using namespace std;
class A
{
public:
int _a;
A()
{
_a=1;
}
void print()
{
printf("%d",_a);//********
}
};
class B :public A
{
public:
int _a;
B()
{
_a=2;
}
};
int main()
{
B b;
b.print();
printf("%d",b._a);
return 0;
}
输出结果为1,2 哪位帮忙解释一下?
请问标识********处的_a变量是在编译时定其值的呢,还是在运行时定其值的呢?
谢谢啦!
相关推荐
C++ 内存对象布局
涉及各种情况下C++对象的sizeof大小,包括单一类对象,继承,重复继承 多继承 单一虚继承 等各种情况下的对象大小。对C++对象内存布局有清楚了解。
Java解惑PPT7
Java解惑是本很不错的书,讲解了Java中一些很有趣的东西
VC++对象模型详解
深入而全面的探讨VC++编程环境下的对象模型,帮助你理解OOP思想的底层机制。
学习笔记 c++ 面试
面试题学习后的一些笔记,构造函数,虚函数,虚继承。
java继承详解
nal关键字 1、 被final修饰的成员变量,一旦赋值就不能被修改。那么这种变量我们称之为常量: 常量的定义格式: public static final 数据类型 变量名 定义常量的时候,常量的名字要大写,如果存在两个单词组合起来的名字,要用下划线连接 public static final int AGE = 23;// public static final String USER_NAME = "铁蛋"; 2、 当final修饰方法的时候,该方法不能再被重写 public class Father { String name; public static final int AGE = 23;//被final修饰的成员变量,一旦赋值就不能被修改。 public static final String USER_NAME = "铁蛋"; public Father(String name){ this.name = name; } public /*final*/ void eat(){ //如果一个方法被final关键字修饰,意味着该方法不能被子类重写。 System.out.println(name+"吃番薯..."); } }


