当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>高质量C++/C编程指南-第6章-函数计划(1)</b>[VC/C++编程]

赞助商链接



  本文“<b>高质量C++/C编程指南-第6章-函数计划(1)</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

函数是C++/C程序的基本功效单元,其重要性不言而喻.函数计划的渺小缺陷很简单招致该函数被错用,所以光使函数的功效精确是不够的.本章重点阐述函数的接口计划和内部实现的一些法则. 函数接口的两个要素是参数和返回值.C语言中,函数的参数和返回值的传送方法有两种:值传送(pass by value)和指针传送(pass by pointer).C++ 语言中多了引用传送(pass by reference).由于引用传送的性质象指针传送,而利用方法却象值传送,初学者常常迷惑不解,简单惹起混乱,请先阅读6.6节“引用与指针的对比”.

6.1 参数的法则
l 【法则6-1-1】参数的书写要完好,不要贪图费事只写参数的范例而省略参数名字.假如函数没有参数,则用void填充.

比方:

void SetValue(int width, int height); // 杰出的气势

void SetValue(int, int); // 不良的气势

float GetValue(void); // 杰出的气势

float GetValue(); // 不良的气势

l 【法则6-1-2】参数命名要得当,次序要公道.

比方编写字符串拷贝函数StringCopy,它有两个参数.假如把参数名字起为str1和str2,比方

void StringCopy(char *str1, char *str2);

那么我们很难搞清楚毕竟是把str1拷贝到str2中,还是刚好倒过来.

可以把参数名字起得更有意义,如叫strSource和strDestination.这样从名字上便可以看出应当把strSource拷贝到strDestination.

还有一个问题,这两个参数那一个该在前那一个该在后?参数的次序要遵守程序员的习惯.普通地,应将目的参数放在前面,源参数放在背面.

假如将函数声明为:

void StringCopy(char *strSource, char *strDestination);

别人在利用时大概会不假思考地写成以下情势:

char str[20];

StringCopy(str, “Hello World”); // 参数次序倒置

l 【法则6-1-3】假如参数是指针,且仅作输入用,则应在范例前加const,以避免该指针在函数体内被不测改正.

比方:

void StringCopy(char *strDestination,const char *strSource);

l 【法则6-1-4】假如输入参数以值传送的方法传送对象,则宜改用“const &”方法来传送,这样可以省去暂时对象的构造和析构历程,从而提高效率.

2 【倡议6-1-1】避免函数有太多的参数,参数个数尽大概掌握在5个以内.假如参数太多,在利用时简单将参数范例或次序搞错.

2 【倡议6-1-2】尽大概不要利用范例和数目不肯定的参数.

C尺度库函数printf是采取不肯定参数的典型代表,其原型为:

int printf(const chat *format[, argument]…);

这种气势的函数在编译时丧失了严峻的范例安全查抄.

6.2 返回值的法则
l 【法则6-2-1】不要省略返回值的范例.

C语言中,凡不加范例阐明的函数,一概自动按整型处理.这样做不会有什么好处,却简单被曲解为void范例.

C++语言有很严峻的范例安全查抄,不答应上述情形发生.由于C++程序可以调用C函数,为了避免混乱,规定任何C++/ C函数都必须有范例.假如函数没有返回值,那么应声明为void范例.

l 【法则6-2-2】函数名字与返回值范例在语义上不可冲突.

违反这条法则的典型代表是C尺度库函数getchar.

比方:

char c;

c = getchar();

if (c == EOF)

按照getchar名字的意思,将变量c声明为char范例是很自然的事情.但不幸的是getchar的确不是char范例,而是int范例,其原型以下:

int getchar(void);


  以上是“<b>高质量C++/C编程指南-第6章-函数计划(1)</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .