C++ 如果我们可以实例化一个类的对象并访问该类的成员,为什么我们需要一个指向该类的指针?
C++ 如果我们可以实例化一个类的对象并访问该类的成员,为什么我们需要一个指向该类的指针?,c++,oop,class,visual-c++,pointers,C++,Oop,Class,Visual C++,Pointers,我在这里有点困惑。如果我们可以实例化一个类的对象并访问成员方法,那么为什么要使用指向类的指针呢?这有什么好处吗?我们什么时候使用指向类的指针,什么时候实例化类的对象 多谢各位 如果我们可以实例化一个类的对象并访问成员方法,那么为什么要使用指向类的指针呢 如果您只有一个基类而没有派生类,那么最好在堆栈上创建对象,而不是指向该类的指针。在后者中,您应该在指针上调用delete,以返回new获取的资源。(还要确保堆栈永远不会溢出。如果需要大量实例数组,那么使用new实例化是唯一的选项。) 这有什么好处
我在这里有点困惑。如果我们可以实例化一个类的对象并访问成员方法,那么为什么要使用指向类的指针呢?这有什么好处吗?我们什么时候使用指向类的指针,什么时候实例化类的对象 多谢各位 如果我们可以实例化一个类的对象并访问成员方法,那么为什么要使用指向类的指针呢 如果您只有一个基类而没有派生类,那么最好在堆栈上创建对象,而不是指向该类的指针。在后者中,您应该在指针上调用
delete
,以返回new
获取的资源。(还要确保堆栈永远不会溢出。如果需要大量实例数组,那么使用new
实例化是唯一的选项。)
这有什么好处吗
因为它只适用于指针/引用
我们什么时候使用指向类的指针,什么时候实例化类的对象
这取决于需求。如前所述,如果您只有一个基类,那么在堆栈上创建对象是一个更好的选择。您可能不需要指向类的指针。如果您的类很小,没有通过基类表现出多态性行为,或者没有任何成本进行实例化,那么您可能只需要在运行中撕下一个就可以了 但在许多情况下,我们需要指针,因为:
一个原因可能是性能。假设您有100个某个类的实例。如果您不使用指针,并且希望将这些实例从一个容器复制到另一个容器,那么会有相当大的开销,因为需要对每个容器调用复制构造函数。然而,如果你有指向这些实例的指针,那么唯一真正被复制的就是指针,它使操作更快。你是在问指针的用处是什么吗?@Tejs,指向类的指针的有用性。的可能副本似乎在询问指向类的指针。类型rtti?如果需要复制对象,不管它们是否为指针,仍然需要进行深度复制。但是,如果需要转移所有权,这将是适用的,但如果使用现代/即将到来的C++,则不适用,因为移动语义将负责它。
class foo
{
int a ;
};
foo obj1 ;
foo obj2 = obj1 ; // Copy construction. Both obj2, obj1 have it's independent
// copy of objects. (Deep copy)
foo *obj3 = new foo ;
foo *obj4 = obj3 ; // Copy construction. However, both obj3, obj4 point to the
// same object. (Shallow copy)
// You should be careful in this case because deletion of obj3
// makes obj4 dangling and vice versa.