关于方法的声明问题?请大侠多多指教?

longyunfei 2005-08-12 03:59:56
我在一个类中声明一个方法:
如下
protected:
virtual void OnReceive(int nErrorCode);

在类的文件中是这样写的(编译没有问题通过):
void RTCS_Socket::OnReceive(int )
{
}
但是下面这种写法,编译也不会出错.
void RTCS_Socket::OnReceive(int nErrorCode)
{
}
也就是说两种写法都可以,是为什么啊?
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
EarthKing 2005-08-12
  • 打赏
  • 举报
回复
在类的文件中是这样写的(编译没有问题通过):
void RTCS_Socket::OnReceive(int )
{
}
但是下面这种写法,编译也不会出错.
void RTCS_Socket::OnReceive(int nErrorCode)
{
}

如果只是对函数进行声明(例如在.h中声明一个接口), 那么函数的参数是可以只写明参数类型而不用写参数名的, 但是在.c中定义这个函数的时候就应该把参数名写上了(不然函数内部也不能用你的参数啊).
还有对于函数的声明与定义, 是可以使用不同的参数名字的, 只要类型相同就行了:

// par_name.h
#ifndef _PAR_NAME_H_
#define _PAR_NAME_H_

void DiffParname(int par1, int);

#endif// _PAR_NAME_H_

// par_name.c
#include "par_name.h"

void DiffParname(int parameter1, int parameter2)
{
// do some operations
}


编译及运行是不会出错的.
mituzhishi 2005-08-12
  • 打赏
  • 举报
回复
声明的时候只要指出参数类型即可,

所以上述的两种写法都是正确的。
lyclowlevel 2005-08-12
  • 打赏
  • 举报
回复
学习,顶!
xiaocai0001 2005-08-12
  • 打赏
  • 举报
回复
唉,C++内容也太多了吧!!!!!!
恐怕学到老也学不完整了!
healer_kx 2005-08-12
  • 打赏
  • 举报
回复
确实可以啊,
等你看到模板的时候,学到traits技法的时候,就知道参数类型就够了。可以确定重载的函数的。

但是可是没有参数用了哦~
xiaocai0001 2005-08-12
  • 打赏
  • 举报
回复
真有这回事?上面的那个不写参数名也没事?

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧