读书人

这样用法的区别?该如何解决

发布时间: 2012-03-29 12:53:12 作者: rapoo

这样用法的区别?
Class A;

A a;
A* b;
请大家说说上面两个声明的区别,有何优缺点,谢谢!

[解决办法]
一个是对象,一个是指针,它们所占的空间不同,a 对象占用大约类A所有成员空间,b指针只占一个普通指针的空间大小,而且可以通过new 等操作产生新对象,delete 释放对象。
[解决办法]
我对这个问题也没弄十分明白,我想,在使用上没什么区别吧,在定义上应该有区别,一个是对象,一个是对象指针。对象,直接用就行了,指针的话,还要初始化,让他指向一个有效地址。正如msccao说的,声明一个对象和对象指针,占用的空间不同,不过msccao可能没说明白,对象变量只是占用了所有类成员变量的空间,成员函数是没有副本的。
如果我是在一个类中申明另一个类指针变量,那么我一般不会在声明的时候去初始化他,这是我所了解的一点点区别,希望别的高手继续解答。
class B;
class A
{
B x;
B * y;
};
...
y = new B;//A类的构造或其他地方要进行初始化,当然别忘了在什么地方delete
...
[解决办法]
你希望对象的生存时间受你自己控制,那你就用new.
但要记得delete

[解决办法]
如果你要操作的对象要经常变换的话,用指针比较好。它可以随便指。

读书人网 >C++

热点推荐