1.C++新增了带默认值参数的函数
1.1 格式
格式:
返回值 函数名(参数1=初始值1,..........)
{
}
例如:
void function(int a=10)
{
}
调用:
不需要更改参数的值:
function();
这个调用并没有传参,如果要输出a的值,则输出默认值a=10
更改参数的值:
function(20);
这里改变了参数的值,如果要输出a的值,则输出a=20(即默认值被覆盖)
1.2 注意
此调用报错,因为调用function(20),这里的20 默认传递给第一个形参
void function(int a=10, int c)
{
}
调用:
function(20);//报错
//报错信息
test2.cpp:25:28: error: default argument missing for parameter 2 of ‘void function(int, int)’
25 | void function(int a=10,int c)
| ~~~~^
test2.cpp:25:19: note: ...following parameter 1 which has a default argument
25 | void function(int a=10,int c)
规定:函数中携带默认值的参数需要放在不携带默认值的参数后(针对于多个参数讲)
void function(int a , int c=10)
{
}
调用:
function(20);
1.3 举例
main.cpp
1.3.1 例1
#include <iostream>
using namespace std;
//函数的形参可以带默认值
void function(int c = 10) {
cout << "c=" << c << endl;
}
int main()
{
function();//a=10
//function(20);//a=20
return 0;
}
1.3.2 例2
#include <iostream>
using namespace std;
//函数的形参可以带默认值
//void function(int c = 10) {
// cout << "c=" << c << endl;
//}
//void function1(int c = 10,int b) {
// cout << "c=" << c << endl;
//}
void function2(int b,int c = 10) {
cout << "b=" << b << endl;
cout << "c=" << c << endl;
}
int main()
{
//function();//a=10
//function(20);//a=20
//function1(20);//报错
function2(20);//报错
return 0;
}
2. 内联函数
2.1 概念:
内联函数是指:程序在编译过程中直接进行展开,就不需要在执行时对于函数的参数、局部变量、函数地址等入栈/出栈操作
用途:适用于短小且使用率非常高的代码,内联函数中一般不会放置循环结构
内联函数的声明:
关键字:inline
格式:
inline 返回值 函数名 ([参数1,..........])
{
}
调用:
函数名([实参1,....])
例如:
inline void function()
{
}
调用:function()
1.2 举例
main.cpp
//内联函数的使用
inline int max(int a,int b) {
return a > b?a: b;
}
int main()
{
int a = 10;
int b = 20;
int ret = max(a,b);
cout << "ret=" << ret << endl;
return 0;
}
1.3 面试题
对于一段精简、使用频度高的代码,C语言如何实现才能提高效率,C++如何实现才能提高效率?
C++中将这段代码声明为内联函数
C语言使用宏来实现
例如以下两个举例
#define get_Max(a,b) a>b?a:b
#define sum(a,b) (a)*b
int sum_result=sum(10+20 , 30) ;//900
3. 另外c++还增加了以下等等
(5)新增异常处理
C++可以主动产生异常,并捕获异常进行处理
(6)新增面向对象机制
封装、继承、多态等等
(7)智能指针
用于帮助用户管理堆内存空间
4. C++的编译流程和文件架构
4.1 C++的编译流程
与C一样,在Linux中编译C++代码,一般采用g++
请你阐述C/C++的编译流程,以及每个流程中执行的工作任务
(1)预处理
a、将除源文件以外的内容全部加入到源文件中
b、进行宏替换工作
c、删除掉注释
(2)编译
a、检查用户编写的代码是否符合C++语法规范
b、将用户编写的代码翻译成汇编语言
(3)汇编
a、将汇编语言翻译成机器语言
(4)链接
a、生成可执行文件
4.2 C++的文件架构以及扩展名
(1)主程序文件
该文件中包含main函数,一般放置类的声明与实例化,函数的声明与定义等等
(2)源文件(一般是以.cpp为主)
源文件的后缀名一般是.cpp、.cxx、.cc等等,一般放置类的成员函数实例化、函数的定义等等
(3)头文件(一般是以.h为主)
头文件的后缀名一般是.h、.hpp、.hxx等等,一般放置类的声明、变量的声明、函数的声明等等