[debug]重定义默认参数

编写程序过程中遇到重定义默认参数的错误,如下例所示:

#include<iostream>
#include<stdlib.h>
using namespace std;
class Student
{
private:
	int number;
	char name[10];
public:
	Student(int n = 0, char *s = "no name");
};
Student::Student(int n = 0, char *s = "no name")
{
	number = n;
	strcpy_s(name, s);
}
int main()
{
	Student s1;
	return 0;
}

请教他人发现了原因所在:

1:参数的默认值只可以出现在函数声明中,不可以出现在函数的定义中,否则会出现参数重复定义默认参数的错误---->>语法规定

1定义和声明分开:默认值只可以出现在声明中

2定义和声明不分开,默认值只能出现在定义中

例外:(vs2013可以将默认值出现在定义而不出现在声明中)---->>不把标准当回事

如下所示:

经测试,在vc6.0以及Liunx平台下,当定义和声明分开时:默认值只可以出现在声明中

建议编程者还是按标准做得好

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 20:41:03

[debug]重定义默认参数的相关文章

error c2572重定义默认参数

由于想省事,在声明过函数之后直接复制粘贴去实现,结果出现error c2572重定义默认参数 顾名思义,该默认参数被定义多次,在一个文件(或一个作用域)中,只能为形参指定默认 实参一次,在编译的时候会把头文件和源文件结合,就会出现多次指定默认形参的情况. 因此我们只需要在头文件,或者源文件中声明一次该默认参数,习惯上在头文件中声明. 注:该错误只是编译系统问题,有的编译系统对此并不会报错! error c2572重定义默认参数

[debug]重定义默认參数

编敲代码过程中遇到重定义默认參数的错误,例如以下例所看到的: #include<iostream> #include<stdlib.h> using namespace std; class Student { private: int number; char name[10]; public: Student(int n = 0, char *s = "no name"); }; Student::Student(int n = 0, char *s = &

error c2572重定义默认參数

因为想省事.在声明过函数之后直接复制粘贴去实现,结果出现error c2572重定义默认參数 顾名思义.该默认參数被定义多次.在一个文件(或一个作用域)中,仅仅能为形參指定默认 实參一次.在编译的时候会把头文件和源文件结合.就会出现多次指定默认形參的情况. 因此我们仅仅须要在头文件.或者源文件里声明一次该默认參数.习惯上在头文件里声明. 注:该错误仅仅是编译系统问题,有的编译系统对此并不会报错!

061-PHP函数定义默认参数

<?php function add($x=2,$y=3){ //定义函数并设置默认参数 return $x+$y; } echo add(); //不传入参数调用add函数add(2,3) echo '<br />'.add(5); //传入一个参数调用add函数 echo '<br />'.add(5,6); //传入两个参数调用add函数 ?> 原文地址:https://www.cnblogs.com/tianpan2019/p/10995235.html

Python---函数---默认参数

# 默认参数 # 由于我们经常计算x2,所以,完全可以把第二个参数n的默认值设定为2 def power(x, n=2):     s = 1     while n > 0:         n = n - 1         s = s * x     return s # 这样,当我们调用power(5)时,相当于调用power(5, 2) print('print power(5)', power(5)) print('print power(5,3)', power(5, 3)) # 

C/C++ Python的函数默认参数

发现C/C++  Python的函数可以使用默认参数,来减少传参时候的参数个数. 但是:这样的默认参数最好是不变对象! #include <stdio.h> #include <string.h> void func_1(int id, char s[], char city[] = "Bejing") { printf("%d, %s, %s",id, s, city); } int main() { func_1(1, "李金旭

Python 默认参数

定义默认参数 定义函数的时候,还可以有默认参数. 例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数: >>> int('123') 123 >>> int('123', 8) 83 int()函数的第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数. 可见,函数的默认参数的作用是简化调用,你只需要把必须的参数传进去.但是在需要的时候,又可以传入额外的参数来覆盖默认参数值. 我们来定

函数的默认参数(摘自廖雪峰)

先定义一个函数,传入一个list,添加一个END再返回: def add_end(L=[]): L.append('END') return L 当你正常调用时,结果似乎不错: >>> add_end([1, 2, 3]) [1, 2, 3, 'END'] >>> add_end(['x', 'y', 'z']) ['x', 'y', 'z', 'END'] 当你使用默认参数调用时,一开始结果也是对的: >>> add_end() ['END'] 但是

参数:默认参数必须指向不变对象!

定义默认参数要牢记一点:默认参数必须指向不变对象!参见廖雪峰url:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000 原文地址:https://www.cnblogs.com/hzchh/p/8137814.html