C++类中数据成员为类类型时,定义为对象还是定义为指针?

转载 2015年07月11日 10:47:33
C++中,ClassTest objTest;就已经构造了对象,分配了空间;而在C#,Java中ClassTest objTest;只是声明,并没有分配空间。
在C++中,ClassTest objTest;是在栈上分配空间,ClassTest *pobjTest = new ClassTest;是在堆上分配空间。
栈分配的空间自动回收,堆分配的空间需要手动回收。
那么对于C++类中数据成员为类类型时,定义为对象还是定义为指针,用哪种方法,并没有绝对的情况,需要根据具体情况具体分析。
本质上是对象分配区域的问题,前者是在栈(stack)上分配空间,后者是在堆(heap)上分配空间。
一般来说,可以定义为对象,在如下情况考虑把数据成员定义成指针,
1)有多态的情况;会用到虚函数,基类指针
2)可能和别的类共享,或者只是引用别的类里的某个对象,所以生命周期不是很确定(这个可以考虑智能指针)
3)大数据类,如果定义成对象,会导致当前对象无法在栈内创建

相关文章推荐

C++类成员指针的意义

C++中,成员指针是最为复杂的语法结构。但在事件驱动和多线程应用中被广泛用于调用回叫函数。在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难...

C++类的对象和类的指针的区别

如下程序: #include  #include  using namespace std; class Student { public: static int number;  string na...
  • lincyang
  • lincyang
  • 2011年02月10日 16:07
  • 16542

C++中类成员对象与指针的区别

C++编程过程中,在一个类的数据成员是一个类时,定义这个成员变量为对象还是指针是有讲究的。 在C++中, ClassTest objTest;就已经构造了对象,分配了空间 而在C#、Java中,...
  • nbaDWde
  • nbaDWde
  • 2017年03月29日 22:46
  • 250

C++类的对象和类的指针的区别、指针和引用的区别

#include #include using namespace std; class Student { public: static int number; str...

C++中的类,类中定义该类的指针的用途

关于慕课网上数据结构链表篇的理解 在该课程中,当定义Node类时,在该类内部定义了一个Node类型的指针,那么它有什么作用呢? class Node { public: int data; ...

为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?

从对象构造的角度理解“数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用”...

为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?

为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ? 原文链接:http://www.cnbl...

C++类中定义数据成员的类型的几种方式

C++类中定义数据成员的类型的几种方式

C++笔记_类和对象_类的定义_数据成员与成员函数

类的定义 数据成员与成员函数 c++扩展了结构体的概念,使之可以包含 函数 作为成员。结构体内的函数被称为"成员函数",结构体中的数据则成为"数据成员"。这种结构体被称为类。   coding...

c++中 类数据成员的定义、声明总结

C++为类中提供类成员的初始化列表 类对象的构造顺序是这样的: 1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 2.进入构造函数后在构造函数中执行一般计算   1.类里面的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++类中数据成员为类类型时,定义为对象还是定义为指针?
举报原因:
原因补充:

(最多只允许输入30个字)