B类是从A类中引入的,但是B类没有表示A类的属性

时间:2017-01-06 04:18:01

标签: oop

实际上在下面的代码中, B类不会显示用户输入的名称 ID 。编译控制台时,用户名称为空白,某些数字打印为 878464464566 而不是 ID

我希望你能说出我想说的话。

 class A
    {
    public:
        string name;
        int ID;
        void set()
        {

            cout << "Enter your name:  ";
            cin >> name;
            cout << "Enter your ID:  " ;
            cin >> ID;
        }
        void show()
        {
            cout << "Your name: " << name;
            cout << "Your ID:  " << ID;
        }
        };


    class B :public A
    {
    public:
        void display()
        {
            cout << "Class A funtion: " << endl;
            show();
        }
    };

    void main()
    {   
        A a;
        B b;

        a.set();
        b.display();

    }

2 个答案:

答案 0 :(得分:1)

b对象不从对象获取值。继承赋予它与A类相同的成员,但不赋予对象a的值。您可能希望overload the assignment(=) operator作为B的成员从A类对象复制值。将此定义放在display()定义的右括号(})之后但在定义结束之前B级:

B& operator=(const A& source)
{
    name = source.name;
    ID = source.ID;
    return *this;
}

一旦定义了赋值运算符,就可以通过赋值为对象b赋予对象a的值。把这一行放在“a.set();”之间和“b.display();”

b = a;

答案 1 :(得分:0)

您有两个对象,A类型的“a”和B类型的“b”。

对象“a”已初始化。对象“b”不是。

TYPE B是从TYPE A派生的事实不会使对象“b”得到对象“a”的值。