Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是「;是按照以下条款实施的:;关系,以及我应该何时使用它?_C++_Oop - Fatal编程技术网

C++ 什么是「;是按照以下条款实施的:;关系,以及我应该何时使用它?

C++ 什么是「;是按照以下条款实施的:;关系,以及我应该何时使用它?,c++,oop,C++,Oop,我了解到在OOP中我们可以使用继承,这样我们就可以从基类派生类。我们称之为“是一种关系”,例如:一个人是从人类阶级衍生出来的 还有一个包含,这意味着一个类包含另一个类类型的对象,所以我们可以说一辆车有轮子。我们称之为“有关系” 还有另一种关系叫做“实施中的”,我不确定我是否理解它。这是否意味着私人继承 #include <iostream> using namespace std; class A { }; class B : public A { }; // is-a rela

我了解到在OOP中我们可以使用继承,这样我们就可以从基类派生类。我们称之为“是一种关系”,例如:一个人是从人类阶级衍生出来的

还有一个包含,这意味着一个类包含另一个类类型的对象,所以我们可以说一辆车有轮子。我们称之为“有关系”

还有另一种关系叫做“实施中的”,我不确定我是否理解它。这是否意味着私人继承

#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当现在答案可用时,不要冒犯