【原创】指针与实例的问题

typedef struct
{
vector<string> name;
vector<double> score;
}Student;
有个问题,为啥声明为 Student *stu; 然后 stu->name.push_back(name);运行时会有问题,但是编译无问题~~ ;
Student stu;
stu.name.push_back(name);
这样就没问题,为啥?


答:声明为 Student *stu ,只是定义个一个指针叫做stu,但是还没有student实例,你执行stu->的时候,没有实例。
Student stu; 这样的话,会默认调用构造函数,创建一个实例 。

//-----------------------精彩评论--------------------------

#4楼 2015-01-09 08:53 RonTang  

Student *stu;仅仅定义一个指针,并且该指针没有初始化,并没有指向一个已经存在的Student对象。正确的方式应该为:Student * stu =new Student; 使用完后 delete stu;stu=NULL;

Student stu;利用默认构造函数初始化stu对象。stu是栈对象,在脱离作用域后自动销毁。
posted @ 2015-01-08 11:08  宋桓公  阅读(496)  评论(6编辑  收藏  举报