【发布时间】:2016-07-06 05:43:20
【问题描述】:
为什么 const 应用于结构指针而不是结构时会创建不同的签名?
例如
typedef struct test_s {
int foo;
} test;
void foo(test *ptr){
return;
}
// This is ok
void foo(const test *ptr){
return;
}
void foo(test t){
return;
}
//This is an error
void foo(const test t){
return;
}
(在 gcc 版本 4.9.2 上测试)
更具体地说,为什么当与指针的对不是错误时,底部的错误是错误的。引用的重复问题 (Functions with const arguments and Overloading) 似乎也认为带有指针的情况应该是重复的。
【问题讨论】:
-
根据函数可以接受的参数来考虑。最后 2 个可以采用完全相同的参数,最后一个只是任意决定使其内部副本保持不变(实现细节)。第一个不能使用指向常量的指针,所以从外面看,它们确实是不同的函数。
标签: c++