初识C++中面向对象

C++中面向对象        

        很久以前就听说过C++,这是在C语言的基础之上完善升级的一门编程语言(但据说到现在二者已经大相径庭了),C++完全向下兼容C语言的所有用法,而在一些C语言不够完善的地方进行了一些升级,使得其使用更加方便快捷、效率更高;其中C++有一个很重要的知识点,那就是——面向对象。

内存分区

        我们知道在内存中有分区——代码区、全局区、栈区和堆区,我们主要来探讨一下堆区,和C语言相似,C++中堆区也是由程序员自己向内存申请,并且自己释放的内存区域,这有很多的好处——它可以在堆区开辟出一些区域来分配给程序,所以说能够在一定程度上避免栈溢出的问题(strack overflow)还可以根据用户的需求更加灵活的分配宝贵的内存。而且能增强程序的灵活性,使得对于用户更加的友好。

C语言中向堆区申请内存

        C语言中,我们知道几个内存函数,最简单的——我们使用malloc函数来向堆区申请内存

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>//用strerror函数的头文件
#include<errno.h>//用erron函数的头文件
#include<string.h>//用于报错的头文件
int main()
{
	int* p = (int*)malloc(40);//malloc函数申请40字节的空间,用p来接受
	if (p == NULL)//判断,如果没有申请成功,则p为空指针
	{
		printf("p:%s", strerror(errno));//将错误信息打印
		return 1;//如果错了就不执行了,直接终止代码,并且返回1
	}
	int i = 0;//如果申请成功
	for (i = 0; i < 10; i++)//则给p初始化
	{
		*(p + i) = i + 1;
	}
	for (i = 0; i < 10; i++)//将p打印出来看看
	{
		printf("%d ", *(p + i));
	}
	return 0;
}

        就像这样,我们在堆区中申请了40个字节的内存空间,用指针变量p来接收。这就有很多的好处了——比如在函数调用过程中的局部变量和临时变量会随着函数的结束而被释放,所以说我们不能用函数返回局部变量和临时变量;但用了malloc函数之后,就可以了——因为函数中的变量创建是在栈区,而malloc是在堆区中申请的内存,所以说完全不影响,这个空间是由我们自己来释放的(如果不释放,它的生命周期就是整个程序的生命周期)。这样我们就可以返回局部变量和临时变量了,十分的方便。

C++中向堆区申请内存

        C++中对于堆区内存的申请释放,原理和C语言是一模一样的,只是有些关键字等有细微的差别:

int main()
{
	int* p = new int(10);
	cout << p << endl;
	cout << *p << endl;

	return 0;
}

        我们使用了new这个关键字来向堆区中申请内存,申请的内存是一个地址,所以说我们要用指针变量p来接收这个地址。new后面的是申请的数据类型,上文这么写是相当于在堆区中申请了4个字节来存储一个整型,值是10。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值