C++中的内存区域
C++中的内存区域包括栈和堆两种,其中栈的空间小效率高,一般不到10M,堆的空间大但效率低,可以大到几个G 为了保证程序整体高效地运行,C++用堆来存储类对象的完整数据,用栈来存放堆对象的地址,局部变量,函数参数和返回值等 通过栈中的地址,我们可以间接访问到堆中的实际对象
通过new关键字在堆中动态创建对象
在前面的代码中,我们都是通过默认初始化和构造函数的方式来定义变量的 这样产生的变量是存放在栈中的,如果多次使用,很块栈就会被用完,程序崩溃 科学的方法,是通过new关键字,在堆中动态创建对象,用完再清理回收堆空间
class Person {
public:
string name = "me";
Person(string pName){
name = pName;
}
};
int main() {
Person p1 = Person("A");
Person *p2 = new Person("A");
return 0;
}
指针变量与取址运算符,解引用运算符
指针变量可以存储一个对象的地址,我们通过指针可以访问对应地址存放的对象 取址运算符用于返回一个指针,该指针中保存了对象的地址 解引用运算符,可以取出指针指向的对象
#include
using namespace std;
class Object {
public:
string value = "X";
Object(string value){
this->value = value;
};
};
int main() {
//在栈中定义一个对象
Object obj1 = Object("A");
//在堆中创建一个对象,new会返回一个指向该对象的指针
Object *obj2 = new Object("B");
//定义一个空指针
Object *p1 = nullptr;
//获取对象地址,并赋给指针
p1 = &obj1;
//打印指针,得到的是对象的地址
cout
关注
打赏