在栈上创建对象
Student stu;
Student *pStu = &stu;
在堆上创建对象
Student *pStu= new Student;
在栈上创建出来的对象都有一个名字,比如 stu
,使用指针指向它不是必须的。但是通过 new
创建出来的对象就不一样了,它在堆上分配内存,没有名字,只能得到一个指向它的指针,所以必须使用一个指针变量来接收这个指针,否则以后再也无法找到这个对象了,更没有办法使用它。也就是说,使用 new
在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。
对象指针的使用方法
pStu -> name = "小明";
pStu -> age = 15;
pStu -> score = 92.5f;
pStu -> say();
完整实例
#include <iostream>
using namespace std;
class Student{
public:
const char *name;//如果不加const,调用时只能用单引号赋值。
int age;
float score;
void say(){
cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
}
};
int main(){
Student *pStu = new Student;
pStu -> name = "小明";
pStu -> age = 15;
//对象指针还有第二种访问成员变量的方法
//(*pStu).age=15
pStu -> score = 92.5f;
pStu -> say();
delete pStu; //删除对象
return 0;
}