- 浏览: 104712 次
- 性别:
- 来自: 北京
-
最新评论
对于C++的缺省参数的使用我们应该注意以下几点:
缺省参数不能出现在函数指针、函数引用以及typedef中
缺省参数可以在不同的声明中逐步给出
不同作用域的声明中定义的缺省参数是独立的,互不影响;
同一作用域的声明中不能重复定义同一个参数的缺省值。
看个例子就明白了:
类似的规则也适用于类的成员函数。不过不同的一点是,缺省值的作用范围是整个translation unit
为了不违反One Definition Rule,每个translation unit中指定的缺省值不能不同。
比如说,你不能这样写:
A.cpp
void f(int, int = 7);
...
void f(int = 3, int);
B.cpp
void f(int, int = 7);
...
void f(int = 4, int);
缺省值不一定是常数,允许使用表达式,所以也可以是全局变量或者函数返回值。(8.3-1)
但是缺省值不能是局部变量或者非静态成员函数的返回值,也不能是this。(8.3-7~9)
缺省值的表达式中也不能引用其它参数
比如:
int f(int (&a)[10],int b = sizeof(a));
虚成员函数的缺省值是静态绑定的。而且派生类不会继承基类的缺省参数(8.3-10)
缺省参数不能出现在函数指针、函数引用以及typedef中
缺省参数可以在不同的声明中逐步给出
不同作用域的声明中定义的缺省参数是独立的,互不影响;
同一作用域的声明中不能重复定义同一个参数的缺省值。
看个例子就明白了:
void f(int, int); void f(int, int = 7); void f(int = 7, int); //这句如果提到上一句前面就不对了 void m() { f(4); //等价于f(4,7) void f(int, int); //因为进入新的作用域,f现在变成不带缺省值 f(4); //错误,参数数目不符 void f(int, int = 5); //OK f(4); //等价于f(4,5) void f(int, int = 5); //错误,不能重复定义,尽管这里的缺省值和前面的值是一样的 } int main() { f(); //等价于f(7,7) }
类似的规则也适用于类的成员函数。不过不同的一点是,缺省值的作用范围是整个translation unit
class C { void f(int i = 3); void g(int i, int j = 99); }; void C::f(int i = 3) //错误,重复定义缺省值 { g(); //等价于g(88,99) } void C::g(int i = 88, int j) //整个translation unit有效 { }
为了不违反One Definition Rule,每个translation unit中指定的缺省值不能不同。
比如说,你不能这样写:
A.cpp
void f(int, int = 7);
...
void f(int = 3, int);
B.cpp
void f(int, int = 7);
...
void f(int = 4, int);
缺省值不一定是常数,允许使用表达式,所以也可以是全局变量或者函数返回值。(8.3-1)
但是缺省值不能是局部变量或者非静态成员函数的返回值,也不能是this。(8.3-7~9)
缺省值的表达式中也不能引用其它参数
比如:
int f(int (&a)[10],int b = sizeof(a));
虚成员函数的缺省值是静态绑定的。而且派生类不会继承基类的缺省参数(8.3-10)
发表评论
-
PHP中的mb_convert_encoding与iconv函数介绍
2012-02-24 18:01 1053英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用 ... -
PHP实现动态生成饼状图、柱状图和折线图(转)
2011-08-29 17:59 20315PHP在图像操作方面的表 ... -
HTML&JavaScript实现全选小例子
2011-07-07 14:32 1799<html> <head> & ... -
Linux的计划任务
2011-07-01 11:10 856cron是一个linux下的 ... -
Linux Shell编程学习笔记
2011-06-28 10:31 1719其实作为命令语言互动式地解释和执行用户输入的命令只是S ... -
Suse查看版本
2011-04-14 11:10 48871. 在linux里查看补丁版本,一般的机器查看系统版本都是u ... -
BAT批处理文件与文件夹(zz)
2011-04-06 14:35 22811 建bat文件自动执行复制,删除命令。 例1:以下是 ... -
批处理中Copy与Xcopy的区别
2011-04-06 14:34 110531):copy不能在有子目录存 ... -
关于RPT的license的问题
2011-04-06 10:21 1302RPT的license一共有两种,一种是导入安装RPT时附带的 ... -
DB2的备份与恢复
2011-03-28 09:40 1160说明:在线增量备份前提: 1、更改数据库参数 logretai ... -
java启动相应的windows程序来打开文件
2011-03-07 11:49 10069这里有两种方法: 1.利用java运行时环境和windows系 ... -
HTTP代码整理供查询(转的)
2011-01-11 13:54 937代码 指示 2xx 成功 ... -
Java正则表达式(转)
2010-12-20 14:24 1051package example.regularexpres ... -
RollingFileAppender和DailyRollingFileAppender
2010-12-07 17:28 2123log4j提供RollingFileAppender和Dail ... -
(转载)DB2错误代码大全
2010-12-07 10:30 2240DB2错误代码/SQL返回码信 ... -
select的事件(转)
2010-11-25 16:10 1263onactivate 当对象设置为活动元素时触发。 onaf ... -
[转载] Java Timer和TimerTask详解
2010-11-16 09:55 9611.概览 Timer是一种定时 ... -
Timer的schedule()方法的正确使用
2010-09-20 16:08 1650timer.schedule(new MyTask(),lo ... -
DB2 常用命令(转)
2010-09-16 09:53 15271.1 启动DB2服务 db2start ... -
DB2资料搜集(转载)
2010-09-13 13:53 11191.使用db2cmd打开db2命令行 2.db2look - ...
相关推荐
在本教程“C使用默认参数的构造函数”中,我们将深入探讨如何利用默认参数来优化构造函数的使用,提高代码的灵活性和可读性。 默认参数是一种非常实用的特性,允许我们在调用函数或构造函数时不提供某些参数的值。...
当重载函数与默认参数一起使用时,可能出现二义性问题。例如,如果有两个或更多具有不同参数数量和默认值的重载函数,调用函数时可能不知道应选择哪个版本。如下所示: ```cpp func(int); // 重载函数1 func(int, ...
指针作为函数参数的注意事项.cpp
Python函数的默认参数是编程中常见的特性,它允许我们在调用函数时省略某些参数的值,这些参数将使用在函数定义时设定的默认值。然而,如果不正确地使用默认参数,可能会导致一些意外的问题。以下是一些关于Python...
注意事项:(1)一般在声明函数是设置默认参数。 如果在函数声明和定义函数时都设置了默认参数,则以函数声明的默认参数为准。 代码如下:#include<iostream>using namespace std;int main(){ double add(double a=...
2. **注意事项**: - **不能返回局部变量的引用**:因为局部变量在函数执行结束后会被销毁,返回其引用会导致悬空引用,可能会引发未定义行为。 - **不能返回动态分配内存的引用**:如果函数内部使用`new`分配内存...
为了更好地理解和使用51单片机的中断功能,本文将详细介绍51单片机中断函数的注意事项。 #### 二、中断函数概述 在51单片机编程中,中断函数是一类特殊的函数,它们用于响应外部或内部事件而执行特定的任务。与普通...
本文将对Python函数的缺省参数使用进行深入分析,并提出一些操作注意事项,以帮助编程者避免常见的误区。 首先,了解参数定义的顺序是非常重要的。在Python中定义函数时,参数的顺序必须遵循以下规则:首先列出所有...
### C语言函数参数的传递详解 #### 一、引言 在编程中,函数是非常重要的概念,它不仅可以提高代码的复用性,还能使程序结构更加清晰。在使用函数时,经常会涉及到参数的传递问题。对于不同的编程语言,参数传递的...
### 函数细节注意事项 #### 一、函数参数规则 1. **参数完整性**:在定义函数时,确保每个参数都有明确的名字,不建议省略参数名。清晰的参数名有助于提高代码可读性和维护性。 2. **参数命名与顺序**:参数的...
#### 四、注意事项 1. **性能问题**:反射操作比普通的字段访问要慢得多,因此,在性能敏感的应用程序中应尽量避免使用。 2. **安全性**:反射允许代码动态地访问类的私有成员,这可能带来潜在的安全风险。 3. **...
计算机组装与维护教学课件加载BIOS默认参数 加载BIOS默认参数是计算机组装与维护中的一项重要操作。BIOS(Basic Input/Output System)是计算机的基本输入/...但是,需要注意加载BIOS默认参数的注意事项和可能的风险。
下面将详细介绍 AverageIF 函数的使用方法和注意事项。 AverageIF 函数的语法 AverageIF 函数的语法为:`AVERAGEIF(range, criteria, [average_range])`,其中: * `range`:指定要应用条件的单元格范围。 * `...
在C语言中,通常一个函数的参数个数是...以上知识点详细介绍了C语言中如何实现参数个数可变的函数,包括其原理、使用方法、注意事项以及最佳实践。在实际开发中,掌握这部分知识对于编写灵活且健壮的代码是非常重要的。
尤其是在涉及数组时,数组名作为函数参数的处理会带来一系列的特殊问题和注意事项。本文档的内容主要针对在C语言编程中,当数组名用作函数参数时所产生的问题进行分析研究。以下为研究过程中所涉及的关键知识点。 1...
五、注意事项 尽管命名参数带来了许多好处,但过度依赖命名参数可能会使代码变得冗余。因此,应适当地结合位置参数和命名参数使用,保持代码的简洁性。 总结,命名参数是编程中一个重要的特性,它提高了代码的...
### C语言函数参数的传递和值返回 #### 一、函数参数传递 ##### 1. 形式参数和实际参数 在C语言中,当我们调用一个函数时,需要了解两个概念:形式参数(formal parameters)和实际参数(actual parameters)。...
#### 需要注意的事项 虽然Python允许这种函数覆盖的行为,但在实际开发中应该避免这样做。这种做法不仅会降低代码的可读性和可维护性,还可能导致难以追踪的错误。良好的编程实践建议每个函数都有明确的职责,并且...
三、使用可选参数的注意事项 1. 可选参数必须位于非可选参数之后,因为VB需要在没有提供参数值的情况下确定哪些是必需的,哪些是可以省略的。 2. 如果你想要在多个地方使用同一个默认值,可以考虑使用常量代替直接...