C++ 一个的参数类型的有关问题
C++ 一个的参数类型的问题
对于const限定修饰符的问题:
(1)char const& max1(char const& a,char const& b)
{
//do something...
return b;
}
(2)char const* const& max2(char const* const& a,
char const* const& b)
{
//do something...
return a;
}
对于max1的2个参数a和b,是可以理解的:传2个常量引用给max1,即a和b的值在函数max1里不能改变.
但对于是max2的2个参数a和b,我就不是很理解了,难道是指向一个char类型常量的常量指针?难道是指针a、b的值和它们所指向的变量的值在函数里都不能改变?
还请指点.....
------解决方案--------------------
难道是指针a、b的值和它们所指向的变量的值在函数里都不能改变?
===========
首先,
a b 所不是指针,
是指针的引用。
引用只能初始化,不能赋值,
所以a b的值是不能修改的。
然后,char const* const& a
第一个 const 即修饰了 a指向的内容的常量性,
也就是 它们所指向的变量的值在函数里都不能改变。
至于第二个const的作用,
应该是因为“不能将const类型的对象传递给non-const类型的引用”。
对于const限定修饰符的问题:
(1)char const& max1(char const& a,char const& b)
{
//do something...
return b;
}
(2)char const* const& max2(char const* const& a,
char const* const& b)
{
//do something...
return a;
}
对于max1的2个参数a和b,是可以理解的:传2个常量引用给max1,即a和b的值在函数max1里不能改变.
但对于是max2的2个参数a和b,我就不是很理解了,难道是指向一个char类型常量的常量指针?难道是指针a、b的值和它们所指向的变量的值在函数里都不能改变?
还请指点.....
------解决方案--------------------
难道是指针a、b的值和它们所指向的变量的值在函数里都不能改变?
===========
首先,
a b 所不是指针,
是指针的引用。
引用只能初始化,不能赋值,
所以a b的值是不能修改的。
然后,char const* const& a
第一个 const 即修饰了 a指向的内容的常量性,
也就是 它们所指向的变量的值在函数里都不能改变。
至于第二个const的作用,
应该是因为“不能将const类型的对象传递给non-const类型的引用”。