21xrx.com
2024-12-22 22:08:31 Sunday
登录
文章检索 我的文章 写文章
C++中的两种代码复用方法
2023-07-05 12:49:07 深夜i     --     --
C++ 代码复用 方法

C++是一门面向对象的编程语言,代码复用是面向对象编程的一项重要特性之一。C++有两种常见的代码复用方法:继承和组合。

一、继承

继承是一种允许派生类(子类)从基类(父类)继承属性和方法的方法。通过继承,派生类可以重用父类已有的成员变量和成员函数,同时还可以在其基础上添加新的属性和方法,从而避免了代码的冗余。

继承可以分为公有继承、私有继承和保护继承。公有继承是最常见的继承方式,派生类可以访问父类的所有公有成员和方法,而私有成员和方法则不能被访问。保护继承和私有继承类似,但是保护成员和方法可以被派生类访问。

例如,下面是一个简单的继承实例:

class Person {

public:

  void display()

   cout << "This is a Person." << endl;

};

class Programmer: public Person {

public:

  void writeCode()

   cout << "Programmer is writing code." << endl;

};

int main() {

  Programmer p;

  p.display();

  p.writeCode();

  return 0;

}

在这个例子中,Programmer类继承了Person类,可以访问Person类中定义的成员方法display(),并且添加了自己的成员方法writeCode()。

二、组合

组合是一种对象合成的方法,它是由一个对象包含其他对象来达到代码复用的目的。组合跟继承的区别在于,继承是一个类A从其他类B继承属性和方法,而组合是一个对象C包含其他对象D和E。

组合的一个最大的好处是可以通过组合不同的类来创造出非常灵活的类类关系,提高代码的可扩展性和可复用性。

例如,下面是一个简单的组合实例:

class CPU {

public:

  void run()

   cout << "CPU is running." << endl;

};

class Memory {

public:

  void storage()

   cout << "Memory is storing data." << endl;

};

class Computer {

private:

  CPU cpu;

  Memory memory;

public:

  void work() {

   cpu.run();

   memory.storage();

   cout << "Computer is working." << endl;

  }

};

int main() {

  Computer c;

  c.work();

  return 0;

}

在这个例子中,Computer类中包含了一个CPU对象和一个Memory对象,它们都有自己的方法。通过组合这两个对象,Computer类实现了自己的work()方法,这个方法在CPU运行和Memory存储数据之后,输出了“Computer is working.”。

总结

继承和组合是C++中两种重要的代码复用方法。它们都可以提高代码的重用性和可扩展性。但是,使用时需要根据具体情况来选择。如果一个类需要从多个类中继承方法和属性,或者需要添加自己的方法和属性,那么继承比较适合;如果一个类包含多个不同的对象,它们各自拥有自己的方法和属性,并且这些对象之间没有严格的父子关系,那么组合比较适合。

  
  

评论区

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