相关疑难解决方法(0)

我什么时候应该使用C++私有继承?

与受保护的继承不同,C++私有继承进入主流C++开发.但是,我仍然没有找到它的好用.

你什么时候使用它?

c++ oop

112
推荐指数
5
解决办法
4万
查看次数

组成:使用特征来避免转发功能?

假设我们有两个类,A并且B.当使用组合来建模"has-a""is-implemented-in-terms-of"关系(例如B has-a A)时,缺点与继承之一是B不包含A它需要的公共功能.为了获得对A公共函数的访问,有必要提供转发函数(与继承相反,B继承所有A的公共函数).

为了给出一个更具体的例子,假设我们有一个Person具有-A ContactInfo:

using namespace std;

class ContactInfo
{
public:
   ContactInfo();
   void updateAddress(string address);
   void updatePhone(string phone);
   void updateEmail(string email);
private:
   string address;
   string phone;
   string email;
};

class Person
{
public:
   Person();
   // Forwarding functions:
   void updateAddress(string address){contactInfo.updateAddress(address)};
   void updatePhone(string phone){contactInfo.updatePhone(phone)};
   void updateEmail(string email){contactInfo.updateEmail(email)};
private:
   ContactInfo contactInfo;
};
Run Code Online (Sandbox Code Playgroud)

在设计中忽略任何不足之处(这只是一个人为的例子来证明我下面的问题),我不得不不厌其烦地从复制确切函数签名ContactInfoPerson.在一个更复杂的例子中,可能有许多这样的函数,以及许多组合类的层,导致许多代码重复,具有所有常见的维护和容易出错的问题等. …

c++ oop traits composition aggregation

10
推荐指数
1
解决办法
1115
查看次数

标签 统计

c++ ×2

oop ×2

aggregation ×1

composition ×1

traits ×1