第10,11周 阅读程序写出运行结果 (2)


  1. /* 
  2. *Copyright(c) 2016.烟台大学计算机与控制工程学院 
  3. *ALL rights  reserved. 
  4. *文件名称:main.cpp 
  5. *作者:孙亚茹
  6. *完成日期:2016年5月10日 
  7. *问题描述:阅读程序,写出执行结果 
  8. */  
  9. #include <iostream>
    using namespace std;
    class A
    {
    public:
        A(){a=0;}
        A (int i){a=i;}
        void print(){cout<<a<<"  ";}
    private:
        int a;
    };
    class B: public A
    {
    public:
        B(){b=0;}
        B(int i, int j, int k): A(i),aa(j){b=k;}
        //思考:这3处出现的print,有何区别
        void print()      //(1)
        {
            A::print();   //(2)
            aa.print();   //(3)
            cout<<b<<endl;
        }
    private:
        int b;
        A aa;
    };
    int main()
    {
        B test[2];
        test[0]=B(1,4,7);
        test[1]=B(2,5,8);
        for(int i=0; i<2; i++)
            test[i].print();
        return 0;
    }

第10,11周 阅读程序写出运行结果 (2)_第1张图片

答案:

        (1)print是B的成员函数。(2)print是由于继承类与派生类成员函数名相同,故用A::来区分。(3)aa是A类的数据成员也是调用A的构造函数。

知识小结:

        当派生类与继承类成员函数名相同时应用类名加作用符来区分,例如:A与B的相同用“A::”来区分。



你可能感兴趣的:(第10,11周 阅读程序写出运行结果 (2))