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++ 中的成员对象(学习笔记)

   【概念】成员对象:当一个类的成员是另一个类的对象时,这个对象就叫成员对象。概括的说,就是一个类的成员是一个对象,即成员对象。例如:#includeusing namespace std;clas...
  • rhzwan123
  • rhzwan123
  • 2008年02月19日 10:25
  • 7196

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

#include #include using namespace std; class Student { public: static int number; str...
  • liulina603
  • liulina603
  • 2015年08月05日 08:44
  • 3202

C++中对象或其对象指针的赋值

C++中对象或其对象指针的赋值 C++中成员函数的动态绑定: C++中要实现函数的动态绑定,必须在其基类中将函数声明为virtual且在子类中对函数加以实现。...
  • tianyeming
  • tianyeming
  • 2016年05月20日 13:23
  • 3436

C++类中成员变量和成员指针变量小结

指针的确有点难理解,不过它之所以存在并大范围使用,这样做是有一定道理的。 一、C++中的类和结构使用指针定义成员作用 1、多态的要求。 如果要使用同一接口,多态设计,那么就一定要使用基类指针。只有...
  • u014328353
  • u014328353
  • 2016年01月27日 14:05
  • 2743

C++类成员指针的意义

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

抽象类不能定于对象,但可以用抽象的类定义指针!

可以用一个抽象类定义一个指向该类的指针,但是不能定义或声明对象。 这个中原因就是,定义一个类的对象是,编译器在编译时需要了解类的所有信息以便准确的为要实例化的对象分配内存;由此可见,定义一个类对象是...
  • qq_17242957
  • qq_17242957
  • 2016年10月09日 10:07
  • 2556

map中使用自定义类指针作为key

map中使用自定义类指针作为key 标签: iteratorlessdeleteclassc 2012-05-11 11:58 1411人阅读 评论(0) 收藏 举报  分类...
  • jfkidear
  • jfkidear
  • 2016年01月01日 15:36
  • 1361

类的成员函数指针作为参数传递给其他函数和普通函数指针的传递是不同的

类的成员函数指针作为参数传递给其他函数和普通函数指针的传递是不同的,普通函数指针的传递 只要在参数声明中声明是相同参数个数、类型和相同返回类型的函数指针int (*p)(int),传递时只需传函数名...
  • u011220857
  • u011220857
  • 2014年07月10日 15:57
  • 1933

如何使用指向类的成员函数的指针(详解!)

我们首先复习一下"指向函数的指针"如何使用?   void print()   {   }   void (*pfun)(); //声明一个指向函数的指针,函数的参数是 void,函数的返回值是 vo...
  • lishuhuakai
  • lishuhuakai
  • 2014年01月14日 22:13
  • 27099

C++:类与对象5(矩形的面积与周长)

C++:类与对象5(矩形的面积与周长) 题目描述: Description    定义并测试一个类名为rectangle的矩形类,数据成员为矩形的长和宽,定义2个成员...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016年01月08日 14:18
  • 1773
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++类中数据成员为类类型时,定义为对象还是定义为指针?
举报原因:
原因补充:

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