小河学习日记--C与C++不同之处出

C与C++的不同之处(只讲区别,C++有而C没有的,请听下回分解)

一.内存管理
1.C使用的时malloc/free,malloc再分配内存时是一页一页的分配的,当使用malloc时操作系统会直接批发32页内存,所以使用malloc时,如果没有后续在堆内存上的操作了,是可以越界的。
例如如:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int* p=malloc(4);
*p=4;
*(p+1)=5;
printf("%d\n%d",p,(p+1));
}
在这里插入图片描述
这样就是可以访问成功了。另外使用malloc会导致很多内存碎片,这是无法避免的
2.new会自动计算类型所需的字节数,并从堆中分配相应的内存,返回内存的首地址,而malloc不会。
3.new/delete会自动调用类的构造函数和析构函数
4.new申请的内存会在内存前一个字节记录这块内存所存放数据的数量
二.static
c++完美的继承了c在static上的所有用法。并对其做出了扩展,
C++中的static可以运用到成员变量和成员函数上面,将其编程静态成员变量和静态成员函数
静态成员需要在类内申明,但必须在类外定义和初始化,和成员函数一样需要加 "类名::"限定符表示它属于那个类,但不需要加static
#include
#include
using namespace std;

class User
{
static char name[20];//类中的申明
char pass[20];
public:
User(const char* name,const char* pass)
{
strcpy(this->name,name);
strcpy(this->pass,pass);

}
void show()
{
    cout<<name<<" "<<pass<<endl;
}

};
char User::name;//类外定义
int main()
{
User user(“hehe”,“z234”);
}

三.const
C++对const的检查更加严格,而且被const修饰过的变量,编译器只会对其取一次的值,而C不会。所以const在c++中更加安全
四.void*
void*在C中是一个万能指针,可以对任意变量赋值,而在C++中不行,需要强制转换,因为C++对类型的检查更加严格

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值