C++ 什么是「;是按照以下条款实施的:;关系,以及我应该何时使用它?
我了解到在OOP中我们可以使用继承,这样我们就可以从基类派生类。我们称之为“是一种关系”,例如:一个人是从人类阶级衍生出来的 还有一个包含,这意味着一个类包含另一个类类型的对象,所以我们可以说一辆车有轮子。我们称之为“有关系” 还有另一种关系叫做“实施中的”,我不确定我是否理解它。这是否意味着私人继承C++ 什么是「;是按照以下条款实施的:;关系,以及我应该何时使用它?,c++,oop,C++,Oop,我了解到在OOP中我们可以使用继承,这样我们就可以从基类派生类。我们称之为“是一种关系”,例如:一个人是从人类阶级衍生出来的 还有一个包含,这意味着一个类包含另一个类类型的对象,所以我们可以说一辆车有轮子。我们称之为“有关系” 还有另一种关系叫做“实施中的”,我不确定我是否理解它。这是否意味着私人继承 #include <iostream> using namespace std; class A { }; class B : public A { }; // is-a rela
#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;
}
#包括
使用名称空间std;
甲级{
};
B类:公共A{
}; // 是一种关系吗
C类{
A&aObj;
}; // C有关系
//是否在以下方面实施??如何以及何时?
int main()
{
A A;
B;//B是一个像人一样的人
C C;//C包含A的对象,因此C有A的部分
CUT> P>私有继承在C++中有时被用来表示“以关系”来实现。如果一个私有继承自B,则意味着一个内部拥有B的所有状态和行为,并且可以在它自己的实现中使用该行为。
在许多情况下,最好使用组合来实现这一点(只是让A拥有类型为B的私有数据成员,而不是私有继承),但它仍然时不时地找到一些用途。在C++11中删除函数语法之前,它通常用于生成不允许复制行为的类,在某些情况下,如果所讨论的对象为空,则用于节省空间。不过,一般来说,只需使用合成。它更容易、更干净,也不太可能让人混淆在C++中私有继承有时被用来表示“以关系”来实现。如果一个私有继承自B,则意味着一个内部拥有B的所有状态和行为,并且可以在它自己的实现中使用该行为。
在许多情况下,最好使用组合来实现这一点(只是让A拥有类型为B的私有数据成员,而不是私有继承),但它仍然时不时地找到一些用途。在C++11中删除函数语法之前,它通常用于生成不允许复制行为的类,在某些情况下,如果所讨论的对象为空,则用于节省空间。不过,一般来说,只需使用合成。它更容易、更干净,也不太可能让人混淆.@SamVarshavchik我不知道understand@SamVarshavchik正如scott meyers所说,您对此有何看法:@Syfu_H OP的问题对我来说似乎完全合理-私有继承通常是这样描述的。@templatetypedef谢谢you@SamVarshavchik当现在答案可用时,请不要offend@SamVarshavchik我不understand@SamVarshavchik什么o正如scott meyers所说,您可以这样想:@Syfu_H OP的问题对我来说似乎完全合理-私有继承通常是这样描述的。@templatetypedef谢谢you@SamVarshavchik当现在答案可用时,不要冒犯