CPP学习之——构造函数和new运算符(10.7)

一 概述

我们前面学到了栈。系统会自动在栈中为每个变量开辟内存空间,以保证数值被合理地存放。

二 理论知识

栈由于是系统自动分配,因此速度较快。但是缺点是可存放的空间比较小,只有2M。假如我们要存放比较大的数据,栈显然是不行的,那么就得用放到堆里,堆是一大堆不连续的内存区域,在系统中由链表将它们串接起来,因此它可存放的空间可以很大,关于它们在执行效率以及申请方式上的区别,我们还要在数组中相加讨论,这里我们只需要了解它们的两点第几不同:

  • 栈由系统自动分配内存,堆要程序员进行申请
  • 栈中空间比较小,只有2M,堆的上限是由系统中有效的虚拟机内存来定的。因此获得空间比较大

三 示例及结果输出

3.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
using namespace std;
class A
{
private:
int i;
char j;
public:
A(){cout<<"构造函数执行完毕"<<endl;}
void set(int a, char b)
{
i = a;
j = b;
}
void print(){cout<<i<<j<<endl;}

};
int main()
{
A *a;
a=new A;
a->set(3,'4');
a->print();
return 0;
}

3.2 输出结果

1
2
构造函数执行完毕
34