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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?