继承与聚合
来源:互联网 发布:java培训机构哪家好 编辑:程序博客网 时间:2024/06/05 03:22
问:
定义了类A,以及A的一个子类B, B中的函数想要访问A中的数据成员,不知如何实现?望赐教。 具体问题说明如下:
Class B {
...
int f();
...
}
Class A {
public:
int array[64];
B b_u;
}
对象b_u中的函数f()需要访问A中的成员数据array,应该怎么访问?或者有什么方法可以实现上面的需求?
答:
首先楼主的概念上有个错误。在继承的关系上我们才可以叫做的子类,而楼主给的例子A和B没有继承的关系,仅仅是整体和部分的关系。UML中有个叫“复合”的,就是专指这种关系。
“复合”最典型的例子就是windows里面的界面了:一个窗口是由菜单、按钮等等多个类组合出来的。我们在构造菜单、按钮对象的时候必需知道窗口的位置,才能根据相对位置计算出自己的位置。这个问题似乎和楼主的问题非常相像:作为组件的类B需要访问类A的某些属性。
在C++BUILDER里面是这样解决的:在构造菜单、按钮的时候,构造函数需要参数(Object Parent)。object是C++BUILDER里组件的基类,窗口、菜单、按钮都是从object继承而来的。object应该包含了一个组件的位置等信息,所以当你构造菜单或是按钮的时候把窗口的指针强制转化为object类型传给构造函数。这个时候菜单或是按钮就可以根据Parent参数获得窗口的位置信息了。
当然,要获得对象A的信息,并不需要在构造对象B的时候就把类A的对象的指针传给对象B,只要在对象B需要访问对象A之前把A的指针传给B就可以了。
另外,我的习惯是在定义class A的时候一般的不直接构造B,仅仅是定义一下B的指针,在需要使用B的时候再构造B。象楼主那样定义class A在编程的时候并不常见。
- 继承与聚合
- 聚合与继承
- 继承与聚合
- Maven聚合与继承
- Maven聚合与继承
- Maven聚合与继承
- Maven聚合与继承
- Maven聚合与继承
- Maven 聚合与继承
- Maven聚合与继承
- maven聚合与继承
- Maven聚合与继承
- Maven聚合与继承
- Maven聚合与继承
- maven聚合与继承
- Maven -- 聚合与继承
- Maven聚合与继承
- Maven聚合与继承
- Oracle HowTo:如何快速杀死占用过多资源(CPU,内存)的数据库进程
- 【JavaOne】Sun免费推出新版Java企业开发工具 带可视UML
- 《嵌入式通信软件设计》学习笔记——定时器管理
- [翻译]Reserving and Committing Memory(预约和调拨内存)
- 《嵌入式通信软件设计》学习笔记——表
- 继承与聚合
- [翻译] Effective C++, 3rd Edition, Item 35: 考虑可选的 virtual functions(虚拟函数)的替代方法(下)
- 05/11/10
- 初次来到CSDN的BLOG
- simple rpc framework
- 可行性分析,实用模板。
- .Net中读写二进制流文件的通用函数。
- 看厂
- 关于firefox搜索栏不能用的解决方法