(一)C++类型增强
来源:互联网 发布:数码大师软件多大 编辑:程序博客网 时间:2024/05/29 17:13
c++的类型增强主要体现在以下几点
1. 类型检查更严格2. 增加布尔类型3. 真正意义上的枚举4. 表达式也可被赋值
1类型检查更严格
//类型检查比c语言更加严格int main(){ //****************1***************** const int a; //c++中必须初始化 int *p = &a; //&a == const int * *p = 110; //在c语言中可以用指针来修改const int的值 //****************2***************** char *p = malloc(100); //c语法 char *p = (char *)malloc(100); //c++语法 return 0;}
同样的代码在c语法中就能编译通过,但是在c++中就会报错。 1.1const int a在c++中就必须要初始化,不然就报错,但是在c语言中就能编译通过,而且是个随机值。 1.2上列中的 int *p = &a在c++中编译不会通过,原因是变量a是const int类型,那么取地址就为const int *类型,把一个const int *类型赋值给int *在c++语法中是通不过的,但是c语言就可以通过,而且可以用该指针间接的修改const int a的值,这是c语言的一种缺陷。 1.3我们都知道mallo(100)返回的是void *,在c++语法中建议俩个类型相同才赋值,所以char *p == void *在c++语法中应先把void *强转为char *,注:基础类型可以相互转化如int ,double, float。
2增加布尔类型
eume BOOL{ FALSE, TRUE};int main(){ bool b = false; //c++中的布尔类型的本质是枚举类型 b = 100;b = 10.9;b=-10; //c++中的布尔类型可以赋非0值为真 //BOOL a = 100 //在c++中错误}
2.1在c++中枚举只可以赋值你枚举的那些值,不可以赋值其他的,否则报错,但是c语言的枚举可以. 2.2在c++的语法中不必须使用 enum、struct等前缀,但是在c语言中就必须要使用前缀来声明,如:enum BOOL a。
3真正的枚举
enum { OFF,ON};//上面的枚举等价于 #define OFF 0 // #define ON 1enum WEEK{ Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}int main{ //***************1********************** WEEK week; //未初始化,所以是随机值 //week = 100 //错误 week = Monday //正确 //***************2********************** int a = OFF; if (a == ON) ......//开灯 else ......//关灯 return 0;}
3.1定义枚举变量不能赋予枚举值以外的值。如:WEEK week = 100; 但是在c语言中不会报错。 3.2用枚举来代替宏,所以c++中建议用枚举或者用const来代替宏.
4表达式可以做左值
int main(){ int a,b; (a = b) = 100 //在c语言中不能通过,但是在c++中可以通过 (a !=b ? a : b) = 1000; //在c语言中不能通过,但是在c++中可以通过 return 0; //c语言中可以拿表达式赋值给别人,但是表达式不可以赋值}
4.1在c++中表达式可以做左值,主要是运算符重载机制,具体的我们在运算符重载去分析
0 0
- (一)C++类型增强
- 第一章 C++对C的扩展(Externsion)--(1)类型增强
- C类型表达式一例
- C#:一个增强的TcpClient(一)连接
- C#:一个增强的NetworkStream(一)构造函数
- C#:一个增强的TcpListener(一)构造函数
- C#:一个增强的TcpListener(一)构造函数
- Spring AOP 增强类型
- Spring AOP增强类型
- Spring中的增强类型
- Spring AOP 增强类型
- INFOTYPE增强(信息类型增强)
- INFOTYPE增强(信息类型增强)
- 图像增强(一)
- C#.NET 中的类型转换(一)
- Modern C++(一)auto自动类型推导
- C++中struct类型增强
- C++笔记2--类型增强
- HDU
- RMAN表空间时间点恢复,TSPITR
- math.h头文件中声明了常用的一些数学运算(pow, sqrt, ceil,floor)
- 关于数据库删除
- 欢迎使用CSDN-markdown编辑器
- (一)C++类型增强
- 2012年第三届蓝桥杯C/C++程序设计本科B组省赛题目 微生物增殖 结果填空
- Qt在Windows下的三种编程环境搭建
- 电脑端操作Android手机截图并上传
- DES加密解密算法Java实现
- android手机网络状态监听,判断手机连接的是移动网络还是wifi等
- android 视频直播
- 手机端SVN和代码查看器
- 使用Eclipse构建Maven项目