第七章 函数

原创 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第六版 第七章 编程练习答案

/***************************************************************************************************...
  • zhaoshu01234
  • zhaoshu01234
  • 2014年07月19日 20:34
  • 4867

C++程序设计课后习题及解答(第七章)

(1).如果派生类B已经重载了基类A的一个成员函数fn1(),没有重载基类A的成员函数fn2(),如何在派生类的函数中调用基类的成员函数fn1(),fn2()? (2).定义一个object类,有数据...
  • rl529014
  • rl529014
  • 2016年01月03日 19:06
  • 834

高等数学:第八章 多元函数微分法及其应用(1)多元函数微分法及其应用 偏导数 全微分

§8.1  多元函数的基本概念 本章将在一元函数微分学的基础上,讨论多元函数的微分法及其应用。讨论中,我们主要以二元函数为主,因为从一元函数到二元函数会产生许多新问题,而从二元函数到二元以上的函数则...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年03月02日 12:47
  • 1663

C++Primer 中文版 第五版 第七章课后习题答案

//7.1 #include #include using namespace std; struct Sales_data { string bookNo; unsigned unit...
  • Little_boy_z
  • Little_boy_z
  • 2016年06月08日 20:07
  • 1705

flask web开发第七章如何创建项目中的数据库

很简单 1. $ python manage.py db init 2. $ python manage.py shell >>> db.create_all() 完成----...
  • clean_water
  • clean_water
  • 2016年12月27日 19:27
  • 501

《python核心编程第二版》第七章练习解析

1.字典方法。哪些字典方法可以把两个字典合并到一起? 有个update()方法,不过如果key相同的话,会用后者的key-value覆盖前者的 2.略 3.字典和列表的方法。 (a) 建一...
  • u013938528
  • u013938528
  • 2015年05月01日 10:49
  • 833

unix环境高级编程第七章习题的一些拙见

unix环境高级编程笔记
  • code_mlym
  • code_mlym
  • 2016年07月17日 11:03
  • 412

Python基础教程第7章笔记

创建自己的对象(尤其是类型或者被称为类的对象)是python的核心概念——非常核心,事实上,python被称为面向对象的语言。 对象: 于对象(object)基本上可以看做数据(特性)以及由一系列可...
  • qq_30159351
  • qq_30159351
  • 2016年08月12日 14:39
  • 249

龙书D3D11章节习题答案(第七章)

以下答案仅供参考,有错欢迎留言。 Chapter 7: Lighting
  • tjj00686
  • tjj00686
  • 2016年05月07日 16:07
  • 1259

思科CCNA第三学期第七章答案

1. CSMA/CA 解决了无线网络中的哪个重要问题? 带宽饱和 隐私问题 介质争用 ...
  • u014253173
  • u014253173
  • 2015年02月07日 17:22
  • 2024
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第七章 函数
举报原因:
原因补充:

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