读书人

组合类pk嵌套类! 一直困惑着小女子,该

发布时间: 2012-02-04 15:43:09 作者: rapoo

组合类pk嵌套类! 一直困惑着小女子
组合类
class B
{
public:
.......
};

class A
{
public:
B *pb;
.......
}

嵌套类
class A
{
public:
.......
class B
{
public:
.......
}
};
哪位GG可以给解释下他们之间的区别吗? 既生组合何生嵌套! 小女子在此谢过了

[解决办法]
组合类的话外部可使用,
比如创建B对象,B b;
后者则提供了“提供给A类使用”的语义,B b;会报错,A::B b;才可以
[解决办法]
在C++中,对类进行嵌套有助于隐藏名称,并便于代码的组织
[解决办法]
up
[解决办法]
既生组合何生嵌套!
---------------------------------------------
“组合”指的是“一个对象位于另一个对象之中”,而你的那个“嵌套”指的是“一个类型定义位于另一个类型定义之中”,所以区别是:一个是对象,一个是类型。

PS:问问题时不要故意透漏性别。还有“哪位GG可以给解释下”,难道JJ就不可以解释么?
[解决办法]
楼上说得有理.

对比的对象搞错了,第二个应该是
class A
{class B{};
B *pb;
}

这里主要是限制类class B类型的作用域,也就是class B 是在class A内部的,人们一看就会知道,他们的关系密切,都在同一屋檐下.

如果是
class B{};
class A{B* pb};
这样的class B,身份就是和class A平起平坐,人们以为她还没有对象.

就是这么一回事.

一般来说,如果class B只为了class A而生,那么就不应该放在外部,这样会引起误会.
如果class B同时还为class C,D..这些类服务,那么她就不应该走进class A;

读书人网 >C++

热点推荐