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;
}
文章目录