关于类的问题,请教下~~~谢谢
假设有个
class Student
{
public:
Student()
{
cout < < "Constructing Student.\n ";
semesHours=100;
gpa=3.5;
}
~Student()
{
cout < < "Destructing Sutndet.\n ";
}
protected:
int semesHours;
float gpa;
};
请问
Student s1()和Student* s2=new Student()
有什么不同?
为什么使用结素后s1不用调用delete释放内存,而s2要调用delete释放内存?
希望能解答下,谢谢。
[解决办法]
new的内存是从堆上分配,new和delete总是要成对出现,因为这是用户自己维护的。Student s1()则是由系统维护的内存(栈)。另:Student s();这样的用法我觉得应该也是可以的,
[解决办法]
Student s1() //这句话有错误,不能有括号,否则构造失败,并且此句不会报错!
//分配可能是栈中,也可能是在静态区,看你定义的位置
声明了一个函数 s1,返回类型为 Student,参数列表为空。