21xrx.com
2024-11-05 18:57:48 Tuesday
登录
文章检索 我的文章 写文章
C++如何实现子类继承父类
2023-07-05 05:26:43 深夜i     --     --
C++ subclass inheritance parent class child class

在C++中,子类可以通过继承父类来继承其功能和行为。继承是一种对象导向的编程技术,允许子类使用父类已有的方法和属性,使得代码可重用性更高,降低了代码的复杂度。

C++的继承方式分为三种:公共继承、保护继承和私有继承。公共继承是最常用的一种继承方式,它允许子类访问父类的公共变量和方法。保护继承的子类可以访问父类的保护变量和方法,但不能访问父类的私有变量和方法。私有继承的子类不能访问父类的任何变量和方法。

在C++中,子类可以通过关键字“public”、“protected”和“private”来指定继承方式。下面是一个简单的例子,演示如何在C++中实现子类继承父类:


class Animal{

public:

  void eat()

   cout << "Animal is eating." << endl;

 

};

class Dog: public Animal{

public:

  void bark()

   cout << "Dog is barking." << endl;

 

};

int main(){

  Dog d;

  d.eat();

  d.bark();

  return 0;

}

在上面的例子中,Animal是父类,Dog是子类,用关键字“public”指定了公共继承方式。子类Dog可以访问父类Animal的公共方法eat(),也可以添加自己的新方法bark()。

需要注意的是,当子类继承父类时,父类的构造函数和析构函数都会被调用。在子类的构造函数中可以通过在成员初始化列表中调用父类的构造函数来初始化父类的成员变量。例如:


class Animal{

public:

  Animal(int age)

   this->age = age;

 

  void eat()

   cout << "Animal is eating." << endl;

 

protected:

  int age;

};

class Dog: public Animal{

public:

  Dog(int age): Animal(age){ /*调用父类的构造函数*/

   this->breed = "unknown";

  }

  void bark()

   cout << "Dog is barking." << endl;

 

  void showAge()

   cout << "Dog's age is " << age << endl;

 

private:

  string breed;

};

int main(){

  Dog d(2);

  d.showAge();

  return 0;

}

在上面的例子中,Animal类有一个成员变量age,在Dog的构造函数中调用了父类Animal的构造函数来初始化该成员变量。在子类中还可以添加自己的成员变量和方法,例如Dog类的breed成员变量和bark()方法。

继承可以大大提高代码的可复用性和可维护性,使代码更加模块化和易于扩展。然而,在实际编程中,需要特别注意类之间的继承关系,避免出现过于复杂的继承链,以及出现死循环等问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复