C++中,一个类中调用另一个类
来源:互联网 发布:c语言 时间戳转换函数 编辑:程序博客网 时间:2024/06/11 21:31
问题:C++类中数据成员为类类型时,定义为对象还是定义为指针?
C++中,ClassTest objTest;就已经构造了对象,分配了空间;而在C#,Java中ClassTest objTest;只是声明,并没有分配空间。
在C++中,ClassTest objTest;是在栈上分配空间,ClassTest *pobjTest = new ClassTest;是在堆上分配空间。栈分配的空间自动回收,堆分配的空间需要手动回收。
那么对于C++类中数据成员为类类型时,定义为对象还是定义为指针,用哪种方法,并没有绝对的情况,需要根据具体情况具体分析。
本质上是对象分配区域的问题,前者是在栈(stack)上分配空间,后者是在堆(heap)上分配空间。
一般来说,可以定义为对象,在如下情况考虑把数据成员定义成指针,
1)有多态的情况;会用到虚函数,基类指针
2)可能和别的类共享,或者只是引用别的类里的某个对象,所以生命周期不是很确定(这个可以考虑智能指针)
3)大数据类,如果定义成对象,会导致当前对象无法在栈内创建
类名 *指针名;
如 在一个类中定义指向另外一个类的指针:
class A {
public:
A();
~A();
.....
B *pt; //这个就是你要的,直接定义就好,但是记得要包含类B 的头文件
}
那如何给改指针分配动态内存?
pt = new B;
用完别忘记delete掉,可以在A的析构函数中做这个事情
0 0
- C++中,一个类中调用另一个类
- vc++ 在一个类中调用另一个类的变量
- java中一个类想调用另一个类的变量
- VC++在一个类中调用另一个类中的函数
- C++类中一个构造函数调用另一个构造函数
- C++类中一个构造函数调用另一个构造函数
- 如何在一个cpp中调用另一个cpp中的类?
- C++类中一个构造函数调用另一个构造函数
- 如何在一个cpp中调用另一个cpp中的类?
- spring aop 同一个类中一个方法调用另一个方法,拦截不到被调用的方法
- php 类中调用另一个类
- Qt中一个.cpp类的函数调用另一个.cpp中类的函数的方法
- C# winform中一个类中如何调用另一个窗体的控件或方法
- C# 窗体中一个类中调用另一个窗体的控件或方法
- C# winform中一个类中如何调用另一个窗体的控件或方法
- C# winform中一个类中如何调用另一个窗体的控件或方法
- 在一个APK中调用另一个APK
- 在一个应用程序中调用另一个应用程序
- Python 任何参数都设置
- Fast dev didn't succeed, trying another location..
- poj2429
- 关于display显示 linux
- 2015梦想起航,牛人都从写博客做起,me too
- C++中,一个类中调用另一个类
- Hummer TimeSeries DB Docker Demo 使用说明
- js 关键字一栏
- Java编程----猜数字游戏
- UIScrollView实现分页效果
- sqlite 修改表名,合并数据库(文件)
- 数据结构和算法经典100题-第1题
- 服务器端如何判断客户端是不是手机
- iphone开发毫秒数转换成日期格式