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 managling与extern “C”
Name managling 这里把它翻译为名字改编
C++为了支持重载,需要进行name managling
Extern “C” 实现C与C++混合编程
如:
#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
默认情况下可以直接使用默认命名空间中的所有标识符。
- C++test 学习(二)
- object-c 学习(二)
- C基础学习(二)
- c#winform学习(二)
- C语言学习(二)
- c学习笔记(二)
- 学习C++(二) 书的诱惑
- Linux C 多线程编程学习(二)
- C语言学习笔记(二)
- C/C++ 学习手札(二)
- 《C和指针》学习笔记(二)
- c++primer学习笔记(二)
- C++Primer学习笔记(二)
- C#JQuery学习(二)技巧总结
- c++Templates学习笔记(二)
- C语言学习(二)格式输入输出
- linux C 编程 一站式学习(二)
- C语言学习笔记(二)
- oj1978: C语言实验——打印图形
- JS日期格式化
- 简单minGW配置与使用
- Java中文本文件读取的两种方法
- fbterm
- C++学习---(二)
- golang实践-如何实现高性能的定时任务管理器
- Hibernate_Session核心方法
- ztree 带搜索框的 下拉选择树
- @Autowired与@Resource区别
- 错误处理机制跳转错误页面
- TensorFlow在图像识别中的应用
- PLSQL DDL Trigger
- JDK 1.7 java.io 源码学习之AutoCloseable接口和try-with-resources语法