C++ 中的组合与继承:构建新软件的有效方式
在软件开发中,我们常常需要借助已有的类来定义新的类,以实现软件的复用和功能的扩展。本文将详细介绍两种实现这一目标的方法:组合(Composition)和继承(Inheritance),并探讨它们的应用场景、特点以及相关的技术细节。
1. 组合(Composition)
组合是指在一个类的定义中使用一个或多个其他类的对象作为成员。这种关系通常被描述为 “has-a” 关系,即一个类的对象 “拥有” 其他类的对象作为其成员。
1.1 示例:Person 类
以下是一个简单的 Person 类的定义,它使用了 String 类来表示姓名和国籍:
#include "String.h"
class Person {
public:
Person(char* n="", char* nat="U.S.A.", int s=1)
: name(n), nationality(nat), sex(s) { }
void printName() { tout << name; }
void printNationality() { tout << nationality; }
private:
String name, nationality;
int sex;
};
在这个示例中,Person 类的对象 “拥有” 一个姓名和一个国籍,它们都是 String 对象。