C++类型增强

类型检查更严格

把一个const类型的指针赋给非const类型的指针。c语言中可以通的过,但是在c++中则编不过去

const int a = 10;
a = 100;//const修饰的不能修改
int *p = &a;
*p = 100;
printf("a = %d\n",a);//a = 100,c里面类型不严密,指针能修改const修饰的变量,实际是a是const int *类型,也就是说强行的赋给int *,把const漏掉了。
const int a与int const a一样,看const修饰谁把类型去掉。
int *const p;把int去掉,p不能改变,p指向的内容可以改变。
const int *const p;它指向的本身和内容都不能改变。
#include<iostream>
using namespace std;
int main() {
const int a = 100;//const修饰的必须要初始化
int *p = &a;//不可以报错 const int *无法转化成int *;
const int *p = &a;//才是正确的
//C++不需要强转
char *p = malloc(100);//C++会报错
char *q = (char*)malloc(100);//void * return 0;
}

布尔类型(bool)

c 语言的逻辑真假用 0 和非 0 来表示。而 c++中有了具体的类型。

int main()
{
bool flag = true;
if(flag)
printf("hello world!\n");
else
printf("hello C++!\n"); return 0;
}

真正的枚举(enum)

c 语言中枚举本质就是整型,枚举变量可以用任意整型赋值。而 c++中枚举变量,只能用被枚举出来的元素初始化。

bool用枚举实现过程:

#include<iostream>
enum BOOL
{
FALSE,TURE
};
int main()
{
const int a = 100;
BOOL flag = TRUE;
bool aa = true;
if(flag)
cout<<a;
printf("sizeof(flag) = %d sizeof(BOOL) = %d sizeof(bool) = %d\n",sizeof(flag),sizeof(BOOL),sizeof(bool));
}
//sizeof(flag) = 4 sizeof(BOOL) = 4 sizeof(bool) = 1
//enum枚举本质是整型

它和即将所学的string类型并不是实际意义上的数据类型而是一个对象。

enum SEASOM
{
Spr,Sum,Autu,Win
};
int main()
{
SEASON s;
s = Win;//在C++中比较严格,除了枚举外的无法赋值。c里面就可以赋其他值。
return 0;
}

其实枚举可以和宏来等价

#define Spr 0
#define Sun 1
.... enum
{
Spr = 1,Sum,Autu,Win
};

在C++中经可能的使用枚举,const代替使用宏。

表达式的值可被赋值

c:

int main()
{
int a,b=10;
a = b = 100;//100赋值给b,b = 100这个表达式赋值给a。
(a = b) = 100;//错误,表达式是不可被赋值的
(a != b?a:b) = 1000;//错误
return 0;
}

c++

int main()
{
int a,b = 5;
(a = b) = 100;
printf("a = %d b = %d\n",a,b);
(a != b?a:b) = 1000;
printf("a = %d b = %d\n",a,b);
return 0;
}
//a = 100,b = 5;
//a = 1000,b = 5
//a = b是一个表达式,b的值赋值给a,最后把100的值赋值给a,b的值没发生变化。

体现C++对C语言的限制与提升

cin cout类对象

scanf printf函数的功能相同

int main()
{
char name[30];
scanf("%s",name);//不安全的输入,输入很多会挂机
fgets(name,30,stdin);//最多只能输入29个字符,比较安全。 cin>>name;//>>流输入运算符
cout<<"name = "<<name<<endl;
//"name = "字符串流入cout对象,name流入cout对象,endl(换行)流入cout对象中,从左至右的顺序。 string name1;
cin>>name1;
cout<<name1;
//很安全,输多少都不会挂机
cin>>a>>b;//有顺序,从键盘输入的第一个数流入a,第二个数流入b
//<=>
cin>>a;
cin>>b; return 0;
}

C/C++(C++类型增强)的更多相关文章

  1. C++笔记十二:C++对C的扩展——struct关键字类型增强

    C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型. C++中的struct是一个新类型的定义声明. struct Student { char name[100]; int  ...

  2. C++中struct类型增强

    struct类型的加强: C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型. C++中的struct是一个新类型的定义声明. demo struct Student { ch ...

  3. 不用typsescript也能使用类型增强功能

    由于 JS 的弱类型.宽松的编写规范.以及开发工具的弱鸡支持,我们在维护前人的代码时,经常会出现不知道某一个方法或字段命名来自于哪里,一定要在全局搜索以后慢慢筛查才能找到 同样我们在使用接口返回的对象 ...

  4. 03C++语言对C的增强——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符

    1.“实用性”增强 C语言中的变量都必须在作用域开始的位置定义,C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义. 2.C++对c语言register的增强 register关键字 ...

  5. C++语言对C的增强(1)——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符

    1.“实用性”增强 C语言中的变量都必须在作用域开始的位置定义,C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义. 2.变量检测加强 在C语言中,重复定义多个同名的全局变量是合法的: ...

  6. 如何增强 Linux 系统的安全性,第一部分: Linux 安全模块(LSM)简介

    http://www.ibm.com/developerworks/cn/linux/l-lsm/part1/ 1.相关背景介绍:为什么和是什么 近年来Linux系统由于其出色的性能和稳定性,开放源代 ...

  7. 【Spring-AOP-学习笔记-7】@Around增强处理简单示例

    阅读目录 简单介绍 章节1:项目结构 章节2:定义切面类.连接点注解类 章节3:为待增强的方法--添加注解声明 章节4:AspectJ配置文件 章节5:测试类xxx 章节6:测试结果 Around 增 ...

  8. SAP HR模块的基础数据表和增强配置

    信息类型是SAP HR模块数据单元,用于对人员数据的记录和维护,是HR的基础.信息类型按照其创建方式的不同可以分为:人事信息类型.组织信息类型.信息类型数据的维护主要在事物码PA30.PA40.po1 ...

  9. SAP 常用增强记录文档

    转自:http://blog.csdn.net/budaha 20170215需要一个PR 修改保存时候的增强,目的是同步PR的处理状态 EBAN-STATU 到一个自建表ZTPRTOPO,记得有个P ...

随机推荐

  1. 洛谷 P2747 [USACO5.4]周游加拿大Canada Tour

    P2747 [USACO5.4]周游加拿大Canada Tour 题目描述 你赢得了一场航空公司举办的比赛,奖品是一张加拿大环游机票.旅行在这家航空公司开放的最西边的城市开始,然后一直自西向东旅行,直 ...

  2. CAS-ERR Cannot create a session after the response has been committed

    现象: 当cas 登录人数较少时候没有错误,但是用户过多时候出现下列err May-2016 18:09:11.932 SEVERE [http-nio-8080-exec-52] org.apach ...

  3. cocos2d-iphone 动作

    (1)CCMoveTo [CCMoveTo alloc]initWithDuration:<#(ccTime)#> position:<#(CGPoint)#> 參数说明 : ...

  4. 通过DNS通道传输的交互式PowerShell脚本

    摘自:http://www.freebuf.com/sectool/90616.html 欢迎来到一周PowerShell脚本的第五天,今天我们将讨论使用ICMP和DNS的交互式PowerShell脚 ...

  5. HDFS的配额

  6. html5开发页游(前话)

    导师要求模仿某个页游网站开发益智小游戏.老板的要求是要跨平台,IOS,Android.PC.Mac等系统主要通过浏览器打开都能用.那个网站的页游是通过flash实现的,使用这种方法肯定不能满足老板的要 ...

  7. BootStrap--from 表单

    1 垂直表单(默认) 2 内联表单 3 水平表单 使用 class .sr-only,您可以隐藏内联表单的标签. 垂直或基本表单 基本的表单结构是 Bootstrap 自带的,个别的表单控件自动接收一 ...

  8. sys.path

    sys.path.append() 和 sys.path.insert() python程序中使用 import XXX 时,python解析器会在当前目录.已安装和第三方模块中搜索 xxx,如果都搜 ...

  9. WHU 1540 Fibonacci 递推

    武大邀请赛的网络预选赛,就去做了个签到题,居然连这个递推都没推出来,真是惭愧. 而且好久没写矩阵乘法了,来回顾一下. 题意: 求Fibonacci数列的,前n项立方和. 思路: 可以求得一下递推公式: ...

  10. 网络编程select函数

    select函数的作用: 在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法 ...