第七章 函数

原创 2011年01月20日 21:56:00

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);//这个样子

相关文章推荐

C++ Primer Plus 中第七章的递归函数,我终于看懂了。。。。

。。本人底子较差。。。好不容易看懂了这个函数。。。贴代码和注释上来,欢迎大家来指点指点。#include const int Len = 66; const int Divs = 6; void ...

第七章 函数.ppt

  • 2012年02月14日 19:14
  • 301KB
  • 下载

第一部分 基本语言 第七章 函数(7.3return语句)

7.3return语句 return语句用于结束正在执行的函数,并将控制权返回给调用该函数的函数。return语句分为两种形式: 一、无返回值的函数: 无返回值函数用于返回类型为...

《C++ Primer Plus(第六版)》(9)(第七章 函数 笔记和答案)

1.ANSI C是C语言的标准,任何C语言的编译器都在ANSI C的基础上扩充。 ANSI C几乎不能完成任何程序的开发。TC、VC等都对ANSI C进行了扩充,加入了自己的规则和库之类的。 对于函数...

C++ Primer 第七章 函数

①C++ Primer 第六章 语句(try 块和异常处理)

第七章 函数(1)

C++创建使用一个函数必须完成三个工作: 提供函数原型  提供函数定义 调用函数 首先讲函数定义的通用格式: typeName functionName(parameterList)...

第七章:函数--c++的编程模块 学习笔记、习题答案(6)

C++ primer plus(第六版)学习笔记、习题答案

(笔记)C++ Primer/第七章 函数

函数 返回非引用类型:返回非引用类型会创建一个未命名的临时对象或副本 返回引用类型:    返回引用类型的函数,返回的不是指,返回的是对象。所以千万不能返回局部对象的引用.   默认实参 默认实参是通...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第七章 函数
举报原因:
原因补充:

(最多只允许输入30个字)