1、C++的的升级
1、C语言的缺点
(1)重用性差
(2)维护性差
2、C++
从面向世界的需求出发来设计我们的程序,
3. 使用增强
A.
for (int i = 0; i < 10; i++)
{
}
C语言编译器的话,会报错,因为C语言认为,变量需要先定义,后面再时候,而C++的编译器则是可以边定义边使用。
B、
C语言编译器 : 可以重复定义变量,但是C++则不允许。
C、对const 的增强:
C语言:
const 修饰之后,只是说明这边个边不能作为左值使用而已,也就是把变量修饰为只读变量
C++:
const 修饰之后,变量就真的是常量了
当const 变量的时候,就将常量放到符号表里面;
编译的过程若发现使用了常量,则直接使用符号表里面的值进行替换
D、const 和 define 区别
const 常量 是由编译器进行处理,提供类型检查和作用域的检查
宏定义是由预处理器处理,做单纯的文本替换而已。
E.对bool 类型的增强
int main()
{
int a;
bool b = true;
printf("b = %d, sizeof(b) = %d\n", b, sizeof(b));
b = 3;
a = b;
printf("a = %d, b = %d\n", a, b);
b = -5;
a = b;
printf("a = %d, b = %d\n", a, b);
b = 0;
a = b;
printf("a = %d, b = %d\n", a, b);
while (1);
}
b = 1, sizeof(b) = 1
a = 1, b = 1 // b 虽然是等于三,但是非零就是 true,编译器是以 一进行替换,
a = 1, b = 1 // 非零所以为 true,
a = 0, b = 0
因为C++编译器会将非零的值全部转为 true,而零值则转为 false,对于 true 和false 而言,内部都是用 零和 一进行替换,
int main()
{
bool b = false;
printf("b = %d\n",b);
b++;
printf("b = %d\n",b);
while (1);
}
输出结果为:0 和 1
F. 三木运算符
int a = 1;
int b = 2;
(a < b ? a : b) = 3;
printf("a= %d, b = %d\n", a, b);
C编译器的话,就会报错,因为在c编译器中,三木运算符返回的是数值,数值是不可以做左值的。
但是在C++编译器就可以,因为三木运算符返回的是变量,所以输出的a = 3, b = 2;
4.引用
引用其实就是对已经变量的一个别名,比如:
int a;
int &b = a;
这就是一个引用的列子,也就是说,对 b 的操作,其实等同于对 a 的操作,记住引用的如好,不是取地址符,是引用哈,
int a ;
int &b = a; // 定义了引用,必须使用其他的变量马上进行初始化
b = 5;
printf("a = %d,b = %d\n",a, b);
printf("%08x\n", &a);
printf("%08x\n", &b);
输出的结果是,a =b =5,输出的地址也是一样的地址,
引用其实是有自己的存储空间的,内部的实现的方式其实也是通过指针的方式实现的,所以一个引用占据的大小就是四个字节,
当函数的返回值作为引用的时候:
(1)栈变量做引用的话,这个实时不被允许,最好不要,
(2)全局变了或者静态变量,可以作为引用,
1、C++的的升级的更多相关文章
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...
- 看完SQL Server 2014 Q/A答疑集锦:想不升级都难!
看完SQL Server 2014 Q/A答疑集锦:想不升级都难! 转载自:http://mp.weixin.qq.com/s/5rZCgnMKmJqeC7hbe4CZ_g 本期嘉宾为微软技术中心技术 ...
- Entity Framework Core 1.1 升级通告
原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...
- ASP.NET 5 RC1 升级 ASP.NET Core 1.0 RC2 记录
升级文档: Migrating from DNX to .NET Core Migrating from ASP.NET 5 RC1 to ASP.NET Core 1.0 RC2 Migrating ...
- SQL Server2016升级前几点自检
SQL Server2016已经出来一段时间了,而且最新的SP1包也于2016年11月18日正式发布,各种新的特性推出让我们跃跃欲试.那么对于我们真实的业务环境,特别是生产环境要不要"跟风& ...
- 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版
背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...
- 升级npm
查看npm的所有版本 运行命令: npm view npm versions 命令运行后,会输出到目前为止npm的所有版本. [ '1.1.25', '1.1.70', '1.1.71', '1.2. ...
- iOS开发 判断当前APP版本和升级
从iOS8系统开始,用户可以在设置里面设置在WiFi环境下,自动更新安装的App.此功能大大方便了用户,但是一些用户没有开启此项功能,因此还是需要在程序里面提示用户的 方法一:在服务器接口约定对应的数 ...
- AEAI DP V3.6.0 升级说明,开源综合应用开发平台
AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...
随机推荐
- Testlink集成Jira时如果出现Error咋办?
TestLink在用SOAP集成Jira时,如果出现: SOAP Fault: (code: WSDL, string: SOAP-ERROR: Parsing WSDL: Couldn't load ...
- vue的v-for循环普通数组、对象数组、对象、数字
如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- 使用filter: blur() 的时候解决图片周围泛白和容器外范围变模糊的问题
类似于这种,这个时候出现了周围变模糊,并且边缘泛白的情况 周围模糊这个问题很好解决,给父容器加overflow:hidden:就可以了 效果如上,至于周围泛白的问题就需要动点脑筋了,给目标添加 tra ...
- JavaScript (JS)基础:BOM 浅析 (含window对象相关基本方法、属性解析)
① window对象(Math方法也属于window对象): window对象是JavaScript中的顶级对象,所有定义在全局作用域中的变量.函数都会变成window对象的属性和方法,window对 ...
- 倒计时 服务器时间 .NET js javascript
原文发布时间为:2011-02-07 -- 来源于本人的百度文章 [由搬家工具导入] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- powershell 调用winform dll
//1.加载dll,调用winform窗体,使用指定构造函数 param{ $filePath="" } [void][reflection.assembly]::LoadFile ...
- Java下使用Swing来进行图形界面开发
1. GUI从创建window开始,通常会使用JFrame.JFrame frame = new JFrame(); 2. 你可以这样加入按钮,文字字段等组件.frame.getContentPane ...
- 用Gen4消除电容触摸屏设计屏障【转】
转自:http://www.cntronics.com/sensor-art/80015498?page=2 中心议题: 电容式触摸屏设计到产品的各种挑战 解决方案: 用Gen4消除电容触摸屏设计屏障 ...
- django + gunicorn + supervisor
在服务器上跑着一个Django项目,想用supervisor管理起来,遇到一个小问题,记录一下本来启动Django项目的命令是用的manage.py , 但是这中方法有个很神奇的坑,就是ctrl + ...
- C#根据反射和特性实现ORM映射实例分析
本文实例讲述了C#根据反射和特性实现ORM 映射的方法.分享给大家供大家参考.具体如下: (一)关于反射 什么是反射? 反射就是在运行时,动态获取对象信息的方法.比如:运行时获得对象有哪些属性,方法, ...