2017-5-18.19.20 C++primer笔记

来源:互联网 发布:安卓新版淘宝指纹支付 编辑:程序博客网 时间:2024/05/29 10:37

c++primer笔记

  • 加入光荣的进化吧

第六章! 函数

  • 对于让函数返回多个值的具体操作:

    1. 定义一个新的数据类型,包含多个参数。
    2. 给函数传入额外的引用实参,令其保存额外的参数,隐式的返回。
  • const形参和实参

    • 当用实参初始化形参时,会忽略掉顶层const。

    - 形参有顶层const时,传给他常量对象或者非常量对象都是可以的。

    不能用字面值初始化一个非常量引用

int &r4=42; /// wrong!

  • 对于不需要修改值的实参。 形参要加上const
  • const string &a; 这是一个底层const
  • string const &a ; 这是一个顶层const;

  • bool类型

    • 只能 return true;
    • return false;
    • 不能return 1 ;
  • 给main函数传参

    • int main(int argc , char *argv[] ){}
    • int main(int argc , char **argv ){}
    • 第一个形参argc表示数组中字符串的数量,第二个形参是数组。\
    • 当使用argv中的实参时,可选的实参从argv[1]开始,,argv[0]保存的是程序的名字,而非用户输入。

“`cpp
int *p1[10]; ///p1是一个含有10个指针的数组

int (*p2)[10]; ///p2是一个指针,指向含有十个整数的数组
“`


  • 由于数组不能被拷贝,所以函数不可以返回数组,但可以返回函数的指针!利用的是类型别名的方法。

    1. 声明返回函数指针的函数
      cpp
      int (*func(int val))[10];//括号要对,并且维数必须标明
      /************************************************************
      type (*function_name(parameter list))[dimension]
      逐层的理解:func(int i),名为func的函数有一个int型的参数i
      (*func(int i)),表明我们可以对函数返回的结果进行解引用操作
      (*func(int i))[10],表明对函数的解引用可以得到大小为10的数组
      int (*func(int i))[10],表示数组中的元素是int类型
      ************************************************************/
    2. 尾置返回类型
    3. 使用decltype ,已知函数的返回值时,可以使用decltype表示返回类型是指针。

      • 函数重载
      • 当同一个作用域内几个函数名字相同但形参列表不同,称为==重载==函数(overloaded)
      • 函数的名字让编译器知道它调用的是哪个几个同名函数, 函数的形参决定具体使用哪个函数。减轻函数取名负担。
      • 不允许两个函数除了返回类型外其他要素都相同。
      • 因为==顶层const不影响传入函数的对象==,所以一个拥有顶层const的形参和一个没有顶层const的形参并无区别!
      • summary:==函数的重载必须有形参数量或者形参类型上的不同==

      • 一旦某个形参被赋予了默认值,它【后面】的所有形参都必须有默认值。

原创粉丝点击