菜鸟提问:用对象的指针有什么好处?哪些场合需要用new哪些不需要

初学者提问:用对象的指针有什么好处?哪些场合需要用new哪些不需要?
初学C++,问得比较浅,大家别笑话我,但这两个问题自己没想明白

1)用对象的指针有什么好处?
假设A是我自定义的类
A a;
A *pa;

在什么场合,用指针A *更好呢?难道用a不是能一样访问A的所有成员变量和函数吗?而且a.x比pa->x更简洁。


2)哪些场合需要用new哪些不需要?
用了new,则一定要用delete,否则引起内存泄露。
那我不用new创建的对象,系统会自动回收内存吗?
如果是这样,之所以还要用new + delete,一定是它有某种好处对吗?
好处何在呢。

------解决方案--------------------
#include<iostream.h>
class M
{
int x,y;
public:
M(){x=y=0;}
M(int i,int j){x=i;y=j;}
void setxy(int i,int j){x=i;y=j;}
void copy(M *m);
void print();

};
void M::copy (M*m)
{x=m->x ;y=m->y ;}
void fun(M m1,M *m2,M &m3)
{
m1.setxy (10,20);
m2->setxy (11,22);
m3.setxy (1,2);
}
void M::print()
{cout<<"x="<<x<<"y="<<y<<endl;}
void main()
{ M mp(3,9),mq(33,44),mr;
cout<<"mp:";mp.print();
cout<<"mq:";mq.print();
mr.copy (&mp);
cout<<"mr:";mr.print();
fun(mp,&mq,mr);
cout<<"mp:";mp.print();
cout<<"mq:";mq.print();
cout<<"mr:";mr.print();
}关于第一个问题请楼主把这个程序自己上级调试,体会!只有在程序中才能说的清楚那个问题
------解决方案--------------------
c++中的多态是靠 什么实现的????

指针和引用

指针没有自动回收怎么办????

智能指针(句柄)

楼主 可以上网搜索 或者 找本书看看
------解决方案--------------------
如下程序: 
C/C++ code
#include <iostream> 
#include <string> 
using namespace std; 
class Student 
{ 
public: 
static int number;  
string name; 
public: 
Student() 
{ 
} 
void set(string str) 
{ 
name = str; 
number++;    // 调用静态数据成员 
} 
void print()  // 态成员函数 print() 
{ 
std::cout < < name < <" : The number of the students is " < < number < < " numbers." < < std::endl; // 调用静态数据成员 
} 
}; 

int Student::number = 0;  // 静态数据成员初始化 

int main(int argc, char** argv) 
{ 
Student* s1; 
s1 = new Student(); 
s1->set("111"); 

Student s2; 
s2.set("222"); 

s1->print(); 
s2.print(); 

return 0; 
}

------解决方案--------------------
针对具体情况而言。
比如我写过一个简单dos版本三国杀,里面有很多卡牌,每个卡牌存储一些信息(如卡牌数值、卡牌名字等)。在运行时,卡牌堆会减少,但是不会消失,一直到程序结束才消失。很明显,这么多卡牌用new来创建更好,否则,就要花很多时间和空间来完成卡牌的创建和删除,降低效率。
相对而言,对象sizeof比较小,而且不是一直要用,这样不用new更好。
------解决方案--------------------
(1)学了多态就知道对象指针了,还有抽象类不能产生对象的你怎么去用对象去点?

(2)还是指针的用处,堆、栈存储的概念和差别!自己看看这方面书吧!!!