thinking in c++ 读书笔记:c与c++之区别

首先看一下struct在c与c++中的一个典型例子:首先是c中的:
typedef struct STASHtag{
    int size;
    .....
    unsigned char * storage;
}stash;
 
再来c++中的同一个例子.
struct stash{
    int size;
    .......
    unsigned char * storage;
    ///founctions
    void initialize (int size);
    .......
};
通过上面的对比,可以很看出下面一些区别:
1.c++中不需要使用typedef,在c++中,定义的struct直接被认为是一个可以定义变量的类型,而c中则不行.c中需要用typedef显式的定义一个类型.
2.c++中的struct可以有成员函数.c中不可以.
另外
3.c++中对类型的检查更严格,形如char*str=malloc (30);的语句可以在c中编译通过,但是在c++中则不可以.需要强制类型装换:
             char*str =(char*)malloc(30);
   在c++中,C + +允许将任何类型的指针赋给v o i d *(这是void* 的最初的意图,它要求void* 足够大,以存放任何类型的指针),但不允许将void* 指针赋给任何其他类型的指针。一项基本的要求是告诉读者和编译器,我们知道正在用的类型。这样,我们可以看到calloc( ) 和realloc( ) 的返回值严格地指派为(unsigned char*)。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值