调用超类函数继承c ++

时间:2017-02-15 03:00:30

标签: c++ oop inheritance

在我的C ++文件中,当我运行visual studio时,我的输出不是我认为的那样,我不知道我搞砸了哪里。基本上我有一个Person和一个Student类,学生类继承自Person类,当创建学生obj时,它调用Person类来初始化公共变量。

class Person {
public:
    Person() {

    }
    Person(string _name, int _age) {
        name = _name;
        age = _age;
    }

    void say_stuff() {
        cout << "I am a person. " << name << age << endl;
    }

private:
    string name;
    int age;
};

class Student : public Person {
public:
    Student(string _name, int _age, int _id, string _school) {
        Person(_name, _age);
        id = _id;
        school = _school;
    }

private:
    string name;
    int age;
    int id;
    string school;

};



int main() {


    Student s1("john", 20, 123, "AAAA");
    s1.say_stuff();

    system("pause");
    return 0;

}

我的输出是I am a person. -858993460 这是为什么?

2 个答案:

答案 0 :(得分:3)

调用超类的构造函数的方式是错误的。这就是你应该这样做的方式:

Student(string _name, int _age, int _id, string _school) : Person(_name, _age) {
   id = _id;
    school = _school;
}

请注意,当您将Person(_name, _age);放入正文时,它对构建临时Person对象没有任何影响。另一方面,上面的正确方法引用了&#34; embedded&#34;使用这些参数构造Person

答案 1 :(得分:0)

你的xtabs(Total ~ ., transform(df, Total=as.numeric(gsub("\\D", "", Total)))) # Type # FY Federal State # 2013 5340 11117 # 2014 5163 10123 构造函数的语法错误,用于构造它的超类。它应该是:

Student