首页 > 代码库 > C++ primer 第六章笔记

C++ primer 第六章笔记

Chapter 6 函数

 

#函数基础

  • 声明:返回类型、函数名、形参列表、分号 
  • 定义:返回类型、函数名、形参列表、函数体
  • 调用:函数或函数指针,实参列表

 

#参数传递

1.形参是引用类型,它将绑定到对应的实参上.  否则,将实参的值拷贝后赋给形参;

2.C++,建议使用引用类型的形参代替指针;

//传引用参数
void reset(int &i){
        i = 0;    
}   

int j = 24;
reset(j);
cout << j << endl; //输出是0;

3.使用引用,避免拷贝. 若函数无须改变引用形参的值,最好将其声明成常量引用;

bool isShorter(const string &s1 , const string &s2){
    return s1.size() < s2.size();
}

4.数组形参

数组有两个特殊的性质

  • 不支持拷贝

  • 数组名通常会自动转化为指针

5.main:处理命令行选项;

  • int main( int argc, char **argv ) {}
  • 当使用 argv 中的实参时,一定要记得 可选的实参从 argv[1] 开始;argv[0]保持程序的名字,非用户输入

 

#返回类型与return语句

1.在含有return语句的循环后面应该也有一句return语句;

2.不要返回局部对象的引用或指针

3.引用返回左值: 如果函数返回的是引用类型的对象,可以直接对函数调用的结果进行赋值

getVal( s, 0 ) = A;

4.列表初始化返回值:

vector<string> process()  
{  
    return {"Hi", "bye"};  
}

5.返回数组指针

  • 数组不能被拷贝,所以不能返回数组, 不过函数可以返回 数组的指针 或引用;
  • 声明一个返回数组指针的函数:   
    //数组指针:指向数组的指针 int (*p)[10]; p即为指向数组的指针
    Type (*function (parameter_lst) [dimension]
    eg:
    int (*func(int i))[10];
  • 这种写法难免有些复杂,而复杂容易产生错误,有三种方式简化 P206

    • 类型别名
    • 尾置返回类型
    • decltype

   //补充

 

6.函数重载

  • main函数不能重载
  • 最佳匹配

7.

 

 

 

 

 

 

 

 

 

 

tobecontinued

 

C++ primer 第六章笔记