thinking in c++ 读书笔记:c与c++之区别
2007-01-12 12:47
627 查看
首先看一下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*)。
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*)。
相关文章推荐
- 读书笔记--《Thinking in C++》---C/C++指针的重要区别和引用
- 读书笔记-Thinking in C++-第7章 函数重载和默认参数Function Overloading &Default Arguments
- thinking in c++ 读书笔记---name control
- thinking in c++读书笔记--类的静态数据成员的定义的连接属性:外部连接属性
- 读书笔记-Thinking in C++-第11章 引用和拷贝构造函数
- <<Thinking in C++>> Edition2 Voloum1 读书笔记
- Thinking in C++之1.继承与组合概念、区别及优缺点
- Thinking in C++ 读书笔记(B)
- thinking in c++ 读书笔记---集合初始化
- Thinking in C++读书笔记--5.3缺省参数
- 转载:Thinking in C++之1.继承与组合概念、区别及优缺点
- 读书笔记-Thinking in C++-第14章 继承和组合
- Thinking in C++: C++中关于union、struct、class的区别
- thinking in c++ 读书笔记---operator overloading
- thinking in c++ 读书笔记---友元函数的一个问题
- 读书笔记-Thinking in C++-第15章 多态和虚函数
- Thinking in C++ 读书笔记 之抽象数据类型
- [读书笔记]Thinking in C++
- Thinking in C++ 读书笔记(A)
- Thinking in C++读书笔记--7.2指针常量