c++ 调用父类构造函数
c++ 调用父类的构造函数好像只能在构造函数后面跟:然后写父类的名字,加传入的参数,没有办法写在构造函数内部。
好像是因为c++是允许多基础的原因,不能像python那样写一个super就清晰的知道是哪个父类。
#include <iostream>
#include <string>
using namespace std;
class Person{
public:
Person(){};
Person(string name): _name(name){};
string getName(){return _name;};
private:
string _name;
};
class Student: public Person
{
public:
Student();
Student(string name, int id);
int getId();
private:
int _id;
};
Student::Student(){};
Student::Student(string name, int id): Person(name)
{
_id=id;
// 由于_name 是父类的private变量,所以继承类是无法访问的。那么初始化就只能调用父类的构造函数进行初始化了
// _name=name;
// 并且不可直接调用父类的构造函数, 会报下面的错误
// this->Person::Person(name);
// main.cpp:39:17: error: cannot call constructor 'Person::Person' directly
}
int Student::getId()
{
return _id;
}
int main (int argc, char *argv[]) {
Student stu("xiaoming", 100);
string name=stu.getName();
int id=stu.getId();
cout<<name<<" "<<id<<endl;
return 0;
}