一、对象和分配空间的关系
**创建一个对象,不管是栈方式创建,还是堆空间方式创建, 他们都会执行类里面的构造函数。(被执行两遍) 不管是堆空间还是栈空间:有()最好传参,栈不传参就是错误,堆可以但不建议使用。
总结
1.以栈的方式申请对象,不传参的情况下 Student st1(); //错误的,不能调用构造函数 Student st1; //正确的,可以调用构造函数,建议使用
2.以堆空间方式申请对象 Student st = new Student(); //正确的,可以调用构造函数,不建议使用 Student st = new Student; //正确的,可以调用构造函数,建议使用
二、申请对象的常见形式
对于栈对象:
Box Box1; // Declare box1
Box Box2; // Declare box2
Box *ptrBox; // Declare pointer to a class.
//或者 Box *ptr = new Box(..); 构造函数对象
// 保存第一个对象的地址
ptrBox = &Box1;
现在尝试使用成员访问运算符来访问成员
cout << "Volume of Box1: " << ptrBox->Volume() << endl;
// 保存第二个对象的地址
ptrBox = &Box2;
// 现在尝试使用成员访问运算符来访问成员
cout << "Volume of Box2: " << ptrBox->Volume() << endl;
三、代码
#include <iostream>
using namespace std;
class NEW
{
public:
NEW() //构造函数
{
cout<<"\033[1;42mNEW\033[0m"<<endl;
}
private:
int age;
char sex;
};
int main(int argc, char const *argv[])
{
//创建堆空间 <1>
NEW *ptr =new NEW;
//创建了堆空间对象
//有():建议传入参数,不传入效率不高
//无():不需要传参数
delete ptr; //删除 <2>
ptr =NULL; //置空 <3>
//栈空间
class NEW stack_no;//(创建了【栈对象】)
//有():必须传参,不然错误
//无():不用写(),不传参
return 0;
}