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++的的升级的更多相关文章

  1. 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. ...

  2. 看完SQL Server 2014 Q/A答疑集锦:想不升级都难!

    看完SQL Server 2014 Q/A答疑集锦:想不升级都难! 转载自:http://mp.weixin.qq.com/s/5rZCgnMKmJqeC7hbe4CZ_g 本期嘉宾为微软技术中心技术 ...

  3. Entity Framework Core 1.1 升级通告

    原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...

  4. 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 ...

  5. SQL Server2016升级前几点自检

    SQL Server2016已经出来一段时间了,而且最新的SP1包也于2016年11月18日正式发布,各种新的特性推出让我们跃跃欲试.那么对于我们真实的业务环境,特别是生产环境要不要"跟风& ...

  6. 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版

    背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...

  7. 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 ...

  8. 升级npm

    查看npm的所有版本 运行命令: npm view npm versions 命令运行后,会输出到目前为止npm的所有版本. [ '1.1.25', '1.1.70', '1.1.71', '1.2. ...

  9. iOS开发 判断当前APP版本和升级

    从iOS8系统开始,用户可以在设置里面设置在WiFi环境下,自动更新安装的App.此功能大大方便了用户,但是一些用户没有开启此项功能,因此还是需要在程序里面提示用户的 方法一:在服务器接口约定对应的数 ...

  10. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

随机推荐

  1. linux系统——线程

    linux系统线程 1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者.传统的Unix也支持线程的概念,但是在一个 ...

  2. 【03】react 之 创建component

    React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归:具体的三种方式: 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形式的ext ...

  3. mongoDB权威指南学习笔记

    //mongoDB第1-3章节添加,修改,修改器的笔记: //备注:和MySQL查询一样,时刻想着优化查询数据的时间和性能 //db.help() //数据库帮助信息 //db.blog.help() ...

  4. 洛谷 [P3388] 割点模版

    tarjan 求无向图的割点 割点,即割去此点后原图可变为两个或多个独立的联通块 一个点 x 是割点,当且仅当存在一个x 的子节点 y ,使得 low[y] >= dfn[x] 对于根节点来说, ...

  5. 利用input-radio和input-checkbox的表单特性可以节省很多js代码

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. 【小米3使用经验】小米3联通版 miui7.2.11稳定版刷机

    1.我的手机是小米3联通版的,买来后为了配合公司的手机开发,将Android系统升级到4.4.4版本,MiUi为默认版本. 前段时间可能不小心开启了自动升级,结果Android系统升级到6.0.1版本 ...

  7. 在android app中使用STL库(转)

    1.在jni目录下新建Application.mk; 加入 APP_STL := stlport_static右边的值还可以换成下面几个: system - 使用默认最小的C++运行库,这样生成的应用 ...

  8. hdu 2680(最短路)

    Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  9. Codeforces Gym100971 K.Palindromization-回文串 (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)

    这个题就是从字符串中删除一个字符,然后剩下的是回文串. 我写的代码虽然长得好看,但是循环里面的比较条件容易想错,太智障了... 一开始写的是计数比较,但是有的时候下标相同的也比较了,为了简单一些,直接 ...

  10. python调用phantomjs组件(windows和linux)

    phantomjs在windows和linux系统,可以通selenium的webdriver直接调用,所以只要将phantomjs程序加载到python程序目录下. 示例代码如下所示: #建立Pha ...