1. 下面代码输出什么?为什么?(初始化列表)
#includeusing namespace std;class Test{ int m_i; int m_j;public: Test(int v): m_j(v), m_i(m_j) { } int getI() { return m_i; } int getJ() { return m_j; }};int main(){ Test t1(1); Test t2(2); cout << t1.getI() << " " << t1.getJ() << endl; cout << t2.getI() << " " << t2.getJ() << endl; return 0;}
① 答案:
随机数 1
随机数 2
② 核心提示:
(1)成员变量的初始化顺序与声明顺序有关,与初始化列别顺序无关
2. 下面程序输出什么?为什么?(多态)
#includeusing namespace std;class Base{public: virtual void func() { cout << "Base::func" << endl; }};class Child : public Base{public: void func() { cout << "Child::func" << endl; }};int main(){ Base* pb = new Base(); pb->func(); Child* pc = (Child*)pb; pc->func(); delete pc; pb = new Child(); pb->func(); pc = (Child*)pb; pc->func(); return 0;}
① 答案:
Base::funcBase::funcChild::funcChild::func
② 核心提示:
(1)多态:根据实际的对象类型决定函数调用语句的具体调用目标。