C++Primer读书笔记(三)

来源:互联网 发布:wps表格怎么筛选数据 编辑:程序博客网 时间:2024/06/02 16:21
函数返回值需要注意点:
1、千万不要返回局部对象的引用
当函数执行完毕时,将释放分配给局部对象的内存空间,此时,对局部变量的引用就会指向不确定的内存。举例:
const string &manip(const string &s)
{
string ret = s;
return ret;
}
2、千万不要返回指向局部对象的指针
   函数返回类型可以是大多数类型。特别地,函数也可以返回指针类型。一旦函数结束,局部对象被释放,返回的指针就变成了指向不再存在的对象的悬垂指针。


默认实参:
string ScreenInit(string::size_type height = 24, string::size_type width = 80; char backgroud = " ")
{
////
}
调用包含默认实参的时候,可以为该形参制定参数,也可以不指定。
指定默认实参的约束:
  既可以在函数申明也可以在函数定义中指定默认实参,但是,在一个文件中,只能为一个形参指定默认实参一次。举例:
//ff.h
int ff(int = 0)  //函数声明


//ff.c
#include"ff.h"
int ff(int i = 0){}  //函数定义

而通常应在函数声明中指定默认实参,并将声明放在合适的头文件中。


重载确定的三个步骤:

1、候选函数(与被调用函数同名)

      函数重载确定的第一步是确定该调用所考虑的重载函数集合,该集合中的函数称为候选函数。

2、选择可行函数

      从候选函数中选择一个或者多个函数,它们能够用该调用中指定的实参来调用。

     可行函数满足两个条件:

     1、函数的形参个数与该调用函数的实参个数相同;

     2、每一个实参 的类型必须与对应的类型匹配,或者可被隐式转换为对应的形参类型

3、寻找最佳匹配