C++中创建对象的两种方法以及区别
Posted 帅气的黑桃J
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中创建对象的两种方法以及区别相关的知识,希望对你有一定的参考价值。
首先我们先创建一个对象
class Person{
public:
int age;
string name;
Person(int a,string n):age(a),name(n){}
};
1.在C++中存在两种创建对象的方法:
- 采用类名直接访问
Person p1(18,"jack");
- 采用new运算符
Person *p2 = new Person(18,"jack");
2.两种创建方法的区别
1.采用类名直接调用
(1)创建的对象会放入栈空间,让其与局部变量在一定意义上等价起来。
2.采用new运算符调用
(1)创建的对象会放入堆空间,不会自动清除,需要手动detele清除,不然会产生内存泄漏问题。
(2)在堆中申请开辟一块区域,与java相同,java纯面向对象的原因之一就是对象都保存在堆中,不会出现在栈中。
3.扩展阅读
C++创建对象的过程
过程:开辟空间–>初始化
(1)开辟空间
创建C++类对象的第一步就是为其分配内存空间。对于全局对象,静态对象以及分配在栈区域内的对象,对它们的内存分配是在编译阶段就完成了,而对于分配在堆区域内的对象,它们的分配是在运行是动态进行的。内存空间的分配过程涉及到两个关键的问题:需要分配空间的大小,即类对象的大小。
(2)初始化
在对对象开辟了空间之后对其属性(成员函数)进行赋值。
以上是关于C++中创建对象的两种方法以及区别的主要内容,如果未能解决你的问题,请参考以下文章