C++ 对C语言的加强

首先,C++是以C语言为基础的,而且彻底兼容C语言的特性。 学习C++语言,对于历来没有学习过面向对象的程序员来讲,在学习C++语言时候,着重点学习C++语言面向对象的三大特性,这也是其余面向对象语言的三大特性,原理都同样,只是代码实现不一样而已。c++

C++面向对象的三大特性程序员

封装,继承,多态函数

 

1   namespace 命名空间
学习

 

C中的命名空间优化

在C语言中只有一个全局做用域spa

       c语言中全部的全局标识符共享同一个做用域code

       标识符之间可能发生冲突对象

C++blog

命名空间将全局做用域分红不一样的部分继承

        命名空间能够相互嵌套

        全局做用域也叫默认命名空间

C++命名空间的定义:

namespace name 
{

}

C++命名空间的使用:

使用整个命名空间: using namespace name;

使用命名空间的变量:using name::variable;

  

结论:

C++标准为了和C区别开,也为了正确的使用命名空间,规定头文件不使用后缀.h

 

2    "实用性"增长

 

//c 语言中的变量都必须在做用域开始的位置定义!

  //C++中更增强调语言的”实用性“,全部的变量均可以在须要使用时候再定义。

 

3  register关键字加强

 

//register关键字,请求编译器让变量a直接放在寄存器里面,速度快。

         C语言中,没法取得register变量的地址

         C++语言中,C++编译器有本身的优化方式,能够取得register变量的地址。

并且现代的C++编译器比较智能,即便在不使用register关键字,也会将频繁使用的变量进行register优化。

 

4  变量检测的加强

 

C语言中,重复定义多个同名的全局变量是合法的。例如:

int g_var;

int g_var = 1;

可是在C++中,不容许定义多个同名的全局变量

C语言中的多个同名的全局变量,最终会被连接到全局数据区的同一个地址空间上。

 

5 struct 类型的增强

 

C语言中 struct定义了一组变量的集合,C编译器并不认为这是一种新的类型(注意)

所以用C语言中的struct类型定义变量时候,必须带上struct关键字。

c++语言中,是一种新的类型声明,而且能够在struct里面加上函数,默认的访问权限是public。 在功能上,跟类类型差很少。

 

6 C++中的全部的变量和函数必须有类型

 

在C语言中,

int f();//表示返回值为int,接受任意参的函数

int f(void);//表示返回值为int的无参函数
 

在C++语言中,

int f(); 
int f(void); //以上两行等价的,都表示函数返回值是int的无参函数

 

7 C++新增的Bool类型关键字

 

C++中bool 的值只可取 true和false

理论上bool只占一个字节,多个bool变量在一块儿,可能会占一个字节,取决于编译器实现。

true表明真值,编译器内部用1表示,

false表明假值,编译器内部用0表示,

C++编译器会在赋值时,把非0值转换为true,0值转换为false

 

8 三目运算符在c和C++编译器中的表现

 

C语言中,三目运算符返回的是变量的值,不能用做左值。

C++语言中,三目运算符返回的是变量自己,所以能够用在程序任何地方。

注意:三目运算符可能返回的值中若是有一个是常量值,则不能做为左值使用

               当左值的条件:要有内存空间,其实C++编译器是帮程序员取了一个地址而已。

int a = 20;
int b = 30;
*(a<b ?: &a, &b) - 30;
相关文章
相关标签/搜索