由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 为什么有点函数声明的参数类型但是没有变量名呢?
相关主题
问个简单的memory allocation 的问题。数组定义的时候,分配空间了么?
指针的大小是 4 byte还是有赖于系统?来,出个题
C++ Interview Question一个指向指针的指针的引用?
sizeof(string)问一个C++文件读取的问题
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)一个C/C++面试题
为什么用try catch不住exception?用数组做参数,在函数内部如何知道数组的size?
a simple question for C++ class一个古怪的C程序运行错误。
关于C++中一个Class的大小 (转载)a question about bitwise operation
相关话题的讨论汇总
话题: tp话题: __话题: parameter话题: tmp话题: type
进入Programming版参与讨论
1 (共1页)
s*****k
发帖数: 604
1
为什么有的函数声明了参数类型但是没用变量名呢?
比如这段代码
template
inline _Tp* allocate(ptrdiff_t __size, _Tp*) {
set_new_handler(0);
_Tp* __tmp = (_Tp*)(::operator new((size_t)(__size * sizeof(_Tp))));
if (__tmp == 0) {
cerr << "out of memory" << endl;
exit(1);
}
return __tmp;
}
那个 _Tp* 后面就没有跟变量名
c*****t
发帖数: 1879
2
Not used.

【在 s*****k 的大作中提到】
: 为什么有的函数声明了参数类型但是没用变量名呢?
: 比如这段代码
: template
: inline _Tp* allocate(ptrdiff_t __size, _Tp*) {
: set_new_handler(0);
: _Tp* __tmp = (_Tp*)(::operator new((size_t)(__size * sizeof(_Tp))));
: if (__tmp == 0) {
: cerr << "out of memory" << endl;
: exit(1);
: }

s*****k
发帖数: 604
3
不用干吗把函数声明称那个样子?
输入一个参数不就行了?
难道是为了符合标准吗?

【在 c*****t 的大作中提到】
: Not used.
S*********g
发帖数: 5298
4
But the type of the second parameter is used

【在 s*****k 的大作中提到】
: 不用干吗把函数声明称那个样子?
: 输入一个参数不就行了?
: 难道是为了符合标准吗?

s*****k
发帖数: 604
5
you don't have to declare the type in the parameter list
to use it 吧

【在 S*********g 的大作中提到】
: But the type of the second parameter is used
t****t
发帖数: 6806
6
on the contrary, you have to declare the type of parameter list in c++,
because the type is actually a part of the function name. although you don't
have to declare the name in the parameter list, as you have already seen.

【在 s*****k 的大作中提到】
: you don't have to declare the type in the parameter list
: to use it 吧

s*****k
发帖数: 604
7
template
inline _Tp* allocate(ptrdiff_t __size)
{
set_new_handler(0);
_Tp* __tmp = (_Tp*)(::operator new((size_t)(__size * sizeof(_Tp))));
if (__tmp == 0)
{
cerr << "out of memory" << endl;
exit(1);
}
return __tmp;
}
你说的没错但是把第二个参数去掉在这里是没问题的。
上面这段代码编译没问题的。
看看和我原来贴出来的有什么不同,
就是把第二个参数去掉了。
我想了想应该是 template instantilization 时候用到了第二个参数。
比如 _Tp = int
原来的那个模板函数用的只要 allocate(10, (int*)NULL)就可以
正确instantilize了
没有第二个参数的话就要这样用: allocate(10)

't

【在 t****t 的大作中提到】
: on the contrary, you have to declare the type of parameter list in c++,
: because the type is actually a part of the function name. although you don't
: have to declare the name in the parameter list, as you have already seen.

o*********e
发帖数: 13
8
usually when you know you have a parameter not used for current version but
would be used later, you'd like to include that parameter in the function
declaration by doing like this "Type /*var*/". In that case, you make sure
that var will not be used in current version. When you go to next version
just un-comment var and you are good to go. The important is that interface
is not changed.

【在 s*****k 的大作中提到】
: 不用干吗把函数声明称那个样子?
: 输入一个参数不就行了?
: 难道是为了符合标准吗?

1 (共1页)
进入Programming版参与讨论
相关主题
a question about bitwise operation在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)
请大侠评点一下我这个C++多重继承的程序。。。写得对不对啊。为什么用try catch不住exception?
我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。a simple question for C++ class
请教个static_cast vs reinterpret_cast的问题。关于C++中一个Class的大小 (转载)
问个简单的memory allocation 的问题。数组定义的时候,分配空间了么?
指针的大小是 4 byte还是有赖于系统?来,出个题
C++ Interview Question一个指向指针的指针的引用?
sizeof(string)问一个C++文件读取的问题
相关话题的讨论汇总
话题: tp话题: __话题: parameter话题: tmp话题: type