C++内存分区模型
内存分区堆空间使用new和delete申请和删除内存引用&函数在声明中有默认参数值,函数实现就不能有默认参数;函数实现有默认参数,声明就不能有默认参数函数重载条件
内存分区
代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
堆空间使用new和delete申请和删除内存
#include<iostream>
#include <string>
using namespace std
;
int * func()
{
int *p
= new
int(10);
return p
;
}
int *test()
{
int *arr
= new
int [10];
for (int i
= 0; i
< 10; i
++)
{
arr
[i
] = 100 + i
;
}
return arr
;
}
int main()
{
int *p
= func();
cout
<< *p
<< endl
;
delete p
;
p
= test();
for (int i
= 0; i
< 10; i
++)
{
cout
<< p
[i
] << endl
;
}
system("pause");
return 0;
}
引用&
引用类似于指针,原参数和引用参数指向同一个地址。
#include<iostream>
using namespace std
;
int main()
{
int a
= 10;
int &b
= a
;
int c
= 20;
b
= c
;
b
= 30;
cout
<< "a = " << a
<< "b = " << b
<< "c = " << c
<< endl
;
system("pause");
return 0;
}
函数在声明中有默认参数值,函数实现就不能有默认参数;函数实现有默认参数,声明就不能有默认参数
int func(int a
= 10, int b
= 10);
int main()
{
}
int func(int a
, int b
)
{
return a
+b
;
}
函数重载条件
同一个作用域下函数名称相同函数参数类型不同,或者个数不同或者顺序不同函数的返回值不可以作为重载条件