读书人

指针和数组名作为重载函数的参数时遇到

发布时间: 2013-11-18 00:11:49 作者: rapoo

指针和数组名作为重载函数的参数时遇到的问题
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::cin;
using std::endl;

void print(const int *p)
{
cout << *p << endl;
}

void print(const int ia[10])
{
for (size_t i = 0; i != 10; ++i)
{
cout << ia[i] << " ";
}
cout << endl;
}

int main()
{
int i = 0, j[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
print(&i);
print(j);
return 0;
}


两个print函数,但是参数类型好像是一样的,请问怎么强制要求一个参数类型是有int [10]类型的,而不是int*类型的,让print(j)调用的不是void print(const int *p)这个函数,而是用数组类型做参数的函数 C++ 形参
[解决办法]
VC编译不通过
print函数体已经存在
地址名也是一个指针,
只不过是一个指针常量
所以这样不算重载
[解决办法]
void print(const int *p)
{
cout << *p << endl;
}

void print(const int *ia, int size)
{
for (size_t i = 0; i != size; ++i)
{
cout << ia[i] << " ";
}
cout << endl;
}
[解决办法]
数组到形参那会弱化成指针的,所以这俩个没有区别。。。
[解决办法]
当数组当参数在函数传递的时候,指针和数组是一样的!

读书人网 >C语言

热点推荐