我了解到在OOP中我们可以使用继承,因此我们可以创建从基类派生的类。我们称之为“IS-A关系”,例如:一个人来自人类。
还有遏制,这意味着一个类包含另一个类类型的对象,所以我们可以说汽车有轮子。我们称之为“HAS-A关系”。
还有另一种被称为“IS-IMPLEMENTED-FOR-TERMS-OF”的关系,我不确定我理解它。这是否意味着私有继承??
#include <iostream>
using namespace std;
class A {
};
class B : public A {
}; // is-a relationship
class C {
A& aObj;
}; // C has-a relationship
// is implemented in terms of?? and how and when?
int main()
{
A a;
B b; // b is a an A like man is-a human
C c; // c contains an A's object so C has-a an A's part
cout << endl;
return 0;
}
答案 0 :(得分:3)
C ++中的私有继承有时用于表示&#34;是用&#34;来实现的。关系。如果A私有地继承自B,则意味着A内部具有B的所有状态和行为,并且可以在其自己的实现中使用该行为。
在许多情况下,最好使用组合来执行此操作(只有A有一个类型B的私有数据成员而不是私有继承),但它仍然会偶尔找到一些用途。在C ++ 11中删除函数语法之前,它经常用于创建不允许复制行为的类,并且在某些情况下,如果相关对象为空,则它用于节省空间。但一般来说,只需使用构图。它更容易,更清洁,也不太可能让人迷惑。