在我的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
这是为什么?
答案 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