首先,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;