Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ &引用;const T const“;在参数声明中_C++ - Fatal编程技术网

C++ &引用;const T const“;在参数声明中

C++ &引用;const T const“;在参数声明中,c++,C++,前几天我遇到了这个代码: template< class T > T findMax(const T const * data, const size_t const numItems) { // Obtain the minimum value for type T T largest = std::numeric_limits< T >::min(); for(unsigned int i=0; i<numItems; ++i

前几天我遇到了这个代码:

template< class T > 
T findMax(const T const * data, 
        const size_t const numItems) { 
// Obtain the minimum value for type T 
T largest = 
    std::numeric_limits< T >::min(); 
for(unsigned int i=0; i<numItems; ++i) 
if (data[i] > largest) 
largest = data[i]; 
return largest; 
}
模板
T findMax(常数T常数*数据,
常量大小(常量大小){
//获取类型T的最小值
T最大=
标准::数值限制::最小();
for(无符号整数i=0;i最大)
最大=数据[i];
回报最大;
}

为什么每个参数都包含两个常量?

没有任何有意义的原因。此外,C++中的“代码> > const <代码>限定符的显式重复是非法的。代码格式不正确

7.1.6.1 cv限定符[dcl.type.cv]

1有两个cv限定符,const和volatile。每个cv限定符在cv限定符序列中最多出现一次


<>在C++声明中引入冗余<代码> const >,但这需要在TyPulf名称中“隐藏”以前的<代码> const s。在这种形式下,脱格是合法的,多余的限定词将被忽略。

其中一个
const
修饰符是多余的;这里有两个只不过是一个而已(如果这至少没有发出警告的话,我会感到惊讶)


作者的意思可能是
const T*const
,它是指向
T

的一个常量实例的常量指针。我收回我的接近票,因为那是为
const T*const
而不是
const*const*
。它的意思是
错误:重复“const”
。有人真的想,确实确定不能修改
numItems
。实际上g++会产生编译错误。实际上,我想到了一个有趣的问题——把它们都放在一起有意义吗?@Slava:如果你是说
const volatile
,是的,有意义。例如,想象一个内存映射时钟
const
表示您无法写入(无法设置时钟),
volatile
保证(嗯..尝试这样做)时钟将在适当的时间读取。