c++创建一个自满足的对象来扩展另一个类

C++ creating a self sufficient object that extends another class

本文关键字:对象 扩展 另一个 满足 创建 一个 c++      更新时间:2023-10-16

我想我对对象和扩展对象时会发生什么感到有点困惑。

我的目标是通过扩展A()来创建B(),这样我就可以得到A()的所有函数,等等,但使B()在创建自己时完全自给自足,等等

B(),当从某处实例化时,最终会设置它的颜色,大小,位置等,所以我可以这样做:

B::B *b = new B:B(something in);
this -> addChild(b, 1);

那么当这个->addChild()时它就会添加然后事情就像我在B()

中设置的那样

B::B *b = new B:B(something in);
b->setPosition();
b->setColor();
...
this -> addChild(b, 1);

在封装和继承中吗?

更新:所以我认为让我困惑的是如果:

class A : public Z {
}
class b : public Z {
}
在:

B::B *b = new B::B()
this-> addChild(b,1)

这样不行吗?

你不是在扩展,而是在合成。

如果你想从A扩展类B(这样你就可以在A中获得所有受保护的和公共的方法),你需要这样定义B:

class B : public A { ... }

如果你想把A包含在B中,那么你应该让读者明白。你们两个的选择都不重要,除非不是很清楚。在您的情况下,我更喜欢第一个addChild似乎只是一个操作。

编辑:好的,在你的编辑是它应该工作。但是不需要放置B::B,除非B在B命名空间内。调用new B(), new A():

A *a = new A(..);

一些uri:-比起继承更喜欢组合?——http://en.wikipedia.org/wiki/Composition_over_inheritance