c++入门之基本概念

  
 <代码> c++由c语言衍生而来,最大的特点就是它是一门面向对象的语言,面向过程(c)即需要我们去按照步骤去一步一步写代码,而c++提供的面向对象机制帮助我们更有效更方便的开发。
  1 .关键字:根据版本的不同关键字的个数有所不同,c中有我们熟悉的32个关键字,而在c + + 98这个版本中有63个关键字,很多都是和c中关键字类似,以后遇到会细说
  2 .命名空间 
  

概念:使用名称空间关键字对标识符的名字本地化,以避免命名冲突或名字污染

  

命中空间的定义方式:名称空间N1,命名空间是可以嵌套且可以有相同名称的命名空间出现,编译器在编译时会将其合并为一个命名空间,而在命名空间中定义的变量作用域只限于这个命名空间。

  

命名空间的三种使用方式:N1::,使用N1:: b,使用名称空间N1;
3。缺省参数:缺省参数就是在定义或声明函数时为函数的参数指定一个默认值,若没有传递实参则用默认值。
分类:全缺省参数(每个参数都有默认值),半缺省参数

  
      <李>注意:在半缺省参数定义时必须从右向左赋值,这种情况下传递的实参优先匹配最左边的缺省参数。   <李>缺省参数不能在函数定义和声明中同时定义,最好在声明。
    4。重载函数:在同一作用域中定义几个功能类似的函数,其参数列表(参数个数,参数类型,参数顺序)必须不同才能构成重载函数。
    在这里就要说一下为什么在c++中可以构成函数重载而在c语言中不行了,c中编译器对函数的命名是在函数名前加,c++根据编译器的不同有不同的命名规则,但相同点是都对函数的参数列表在命名时进行了修饰,当然,在c++工程中也可以根据自己的需求加入“外来的”关键字让编译器当作c风格来编译,如:
    <代码> # # # #外来的“c”int添加(int x, int y); 这里编译器就按照c的风格进行编译了。
    5。引用(,):引用不是新定义了一个变量而是给以有的变量起了一个别名,与所引用的变量公用一块内存空间。
    引用作为函数参数和函数的返回值   <李>作为函数返回值时,离开函数作用域后,其栈上空间已经还给系统,因此不能用栈上的空间作为引用类型返回。如果以引用类型返回,返回值的生命周期必须不受函数的限制(即比函数生命周期长)。   <李>引用做参数效率比传值传参效率高,因为没有空间的开辟,但引用在底层上的实现与指针相同,即传址和引用的效率差不多,但引用比指针用起来更加安全。   <李>传引用时若不想修改实参则用常量修饰的引用李   <李> const int,,=10,不是多级引用,叫做右值引用。
    6。内联函数:以内联修饰的函数叫做内联函数,编译时c++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。
    那么内联函数和宏函数在功能上时类似的,那为什么还要引入内联函数呢?在C中使用宏函数时需要对所有变量带上括号,不然表达式所求结果可能会会与预期有所不同,这样就增加了代码的风险性,其二宏是在预处理是进行替换,很不方便调试,没有类型检测的过程,而内联函数则在编译时进行替换,所以相对宏函数更加安全。   <李>在c++中用常量定义的常量替换宏,用内联函数替换宏函数。   <李>内联函数是用空间换时间的做法,所以当代码很长或有递归时不建议使用内联函数,内联关键字对于编译器也只是一个建议,当不适合作为内联函数时编译器就会忽略内联。   <李>内联不建议分开定义和声明,内联函数时具有文件作用域的。
    7.自动关键字(c + + 11)
    汽车修饰的关键字编译器会自动推倒其类型。   <李>汽车在一行定义多个变量时类型必须相同。   <李>汽车不能作为函数的参数也不可以定义数组
    汽车的第二个用法:基于范围的为循环   
     <代码> arr int []={1, 2, 3, 4, 5};
      (汽车,艾凡:arr)
      e *=2,  
      

c++入门之基本概念