C++学习---(二)

来源:互联网 发布:练听力哪个软件好 知乎 编辑:程序博客网 时间:2024/06/08 17:46

内联函数inline的使用

  Inline int max(int  a,  int  b)

  {

      Return  a > b?  a b;

  }

 

 #define  MAX(a, b)  (a) > (b) ? (a) : (b)

 

内联函数与带参数宏的区别?

内联函数调用时,要求实参和形参的类型一致,另外内联函数会先对实参表达式进行求值,然后传递给形参;而宏调用时只用实参简单地替换形参。

内联函数是在编译的时候、在调用的地方将代码展开的,而宏则是在预处理时进行替换的。

C++中建议采用inline函数来替换带参数的宏。

 

函数的重载(overload):相同的作用域,如果两个函数名称相同,而参数不同,我们称之为重载。

函数重载的不同形式:

   形参数量不同

   形参类型不同

   形参的顺序不同

   形参数量的形参类型都不同

调用重载函数时,编译器通过检查实际参数的个数、类型和顺序来确定相应的被调用函数。

 

Name managlingextern  “C”

Name managling 这里把它翻译为名字改编

C++为了支持重载,需要进行name managling

Extern “C” 实现CC++混合编程

如:

#ifdef __cpluscplus

Extern “C”

{

#endif

......

#ifdef __cpluscplus

}

#endif

 

带默认形参值的函数

 1.函数没有声明时,在函数定义中指定形参的默认值

 2.函数即有定义又有声明时,声明时指定后,定义后就不能再指定默认值

 3.默认值得定义必须遵守从右到左的顺序,如果某个形参没有默认值,则它左边的参数就不能有默认值。

如:

  Void  funcl(int  a,  double b = 4.5,  int c  = 3);  //合法

  Void  funcl(int a = 1, double b,  int c = 3); // 不合法

函数调用时,实参与形参按从左到右的顺序进行匹配

 

C++中的命名空间

C语言中只有一个全局作用域

  C语言中所有的全局标识符共享同一个作用域

      标识符之间可能发生冲突

C++中提出了命名空间的概念

  命名空间将全局作用域分成不同的部分

  不同命名空间中的标识符可以同名而不会发生冲突

  命名空间可以相互嵌套

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

 

C++中命名空间的使用:

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

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

  使用默认命名空间中的变量: ::variable

 

  默认情况下可以直接使用默认命名空间中的所有标识符。

0 0
原创粉丝点击