21xrx.com
2025-03-26 23:26:56 Wednesday
文章检索 我的文章 写文章
C++中的两种继承方式
2023-07-05 09:53:41 深夜i     --     --
C++ 继承方式 单继承 多继承 虚继承

在C++中,继承是面向对象编程的一个重要概念。通过继承,子类可以使用父类的属性和方法。C++中有两种继承方式:公有继承和私有继承。

1.公有继承

公有继承是最常用的继承方式。在公有继承中,子类可以访问父类的公有成员和受保护成员。受保护成员只能在类的内部和派生类中访问,而不能在类的外部访问。私有成员只能在类的内部访问。

下面是一个示例代码:

//父类Person
class Person{
public:
  string name;
  void eat()
    cout << "Person: eat" << endl;
  
protected:
  int age;
  void sleep()
    cout << “Person: sleep” << endl;
  
private:
  string address;
};
//子类Student
class Student : public Person{
public:
  void study()
    cout << "Student: study" << endl;
  
};
int main(){
  Student stu;
  stu.name = "Tom"//可以访问父类的公有成员name
  stu.eat();     //可以访问父类的公有成员eat()
  //键入下面这行代码会报错,因为age是受保护成员
  //stu.age = 18; 
  //键入下面这行代码会报错,因为address是私有成员,子类不能访问
  //stu.address = "Beijing";
  stu.study();
  return 0;
}

2.私有继承

私有继承的特点是父类的公有成员、受保护成员都成为子类的私有成员,私有成员还是无法被子类访问。

下面是一个示例代码:

//父类Person
class Person{
public:
  string name;
  void eat()
    cout << "Person: eat" << endl;
  
protected:
  int age;
  void sleep()
    cout << “Person: sleep” << endl;
  
private:
  string address;
};
//子类Student
class Student : private Person{
public:
  void study()
    cout << "Student: study" << endl;
  
};
int main(){
  Student stu;
  //以下两行代码都会报错,因为父类的公有成员、受保护成员都成为了子类的私有成员
  //stu.name = "Tom";
  //stu.age = 18;
  //以下两行代码也会报错,因为子类无法访问父类的私有成员
  //stu.address = "Beijing";
  stu.study();
  return 0;
}

综上所述,公有继承和私有继承是C++中的两种继承方式。在实际编程中,应根据实际情况选择合适的继承方式,以达到更好的程序设计和编码效果。

  
  

评论区