关闭

第七章 函数

405人阅读 评论(0) 收藏 举报

7.2参数传递

1)非引用形参

指针,const

 

2)引用形参

int f(int &a);

int f(const int & a);

int f(int *&a);//指针引用

 

3)容器及数组的形参

一维数组:

void f(int a[10]);//对传入的实参没有要求

void f(int (&a)[10]);//对传入的实参严格要求10个单位长度

多维数组:

void f(int (*a)[10])

 

4)可变形参

void f(int a,…);

7.3 return

1)关于主函数的返回值,由于非0的值根据不同机器解释的意义不同,所以cstdlib 头文件定义了两个预处理变量,表示成功,失败。

例子:

#include<cstdlib>

Int main()

{

         if(error)

                   return EXIT_FAILURE;

         else

                   return EXIT_SUCCESS;

}

 

2)不能返回局部对象的引用

3)引用返回左值

char &get_val(string &str,string :: size_type ix)

{

         return str[ix];

}

int main()

{

         string s(“a value”);

         cout<<s<<endl;

         get_val(s,0)=’A’;//比较不常见

         cout<<s<<endl;

         return 0;

}

 

4)主函数不能调用自身

7.4 函数声明

既可以在函数声明,也可以在函数定义中指定默认实参,但是只能指定一次。

7.5局部对象

静态局部对象

static局部对象,确保不迟于程序执行流程第一次经过该对象的定义语句时进行初始化,知道程序结束前都不会被撤销。

例子:

size_t count_calls()

{

         static size_t ctr=0;

         Return ++ctr;

}

int main()

{

         for(size_t i=0;i!=10;i++)

                   cout<<count_calls()<<endl;//输出一次为1 2 3 4….10

         return 0;

}

7.6内联函数

再返回类型前加上inline就是内联函数了

最好将内联函数放入头文件中

7.7 类的成员函数

a.f();//编译器会将他翻译成为:A::f(&a);

7.8 重载函数

仅当形参是引用或者指针的时候,形参是否为const 才有影响.

 

int a(int &b);//ok

int a(int b);//ok

 

int a(int *b);//ok

int a(const int *b);//ok

int a(int *b);

int a(int * const b);//error 指针是否为const 可以作为重载

7.9 指向函数的指针

1) 定义:

bool (*pf)(int a,int b);

 

2) 简化:

typedef int (*PF) (const char *, const char *);

PF temp;//temp等效为int (*temp) (const char *, const char *);

 

3) 初始化:

temp=0;//

temp=function;//函数名 等效为 temp= &function;

 

指向不同类型的函数指针之间不存在转换

 

4) 通过指针调用函数:

temp(1,2);//ok

(*temp)(1,2);//ok

 

5) 函数指针作为形参:

void f(int a,int b, bool(int c,int d));//等效为void f(int a,int b, bool(*)(int c,int d));

 

6) 返回值是函数指针

void (*f(int a,int b))(bool c,bool d);//返回值是参数是bool c ,bool d的函数指针

 

这个时候使用typedef比较简便,上面的声明如果有先前有定义,就等效为大约 PFf(int a,int b);//这个样子

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18116次
    • 积分:442
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    文章存档
    最新评论