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++中创建对象的两种方法以及区别的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中创建对象的两种方法

Java中创建String的两种方式差异

iOS中创建单例的两种方式

Java跳转页面的两种方法以及它们的区别

java 在Java中创建Fibonacci的两种方法

传统线程技术中创建线程的两种方式