常量ref和常量指针之间的差异,c++; 我想知道C++中const REF和const指针之间的区别。 当我将某物声明为const ref时,我可以更改它的值吗? 还是常数在物体上? 因为我知道常量指针意味着你不能改变指针,但是你可以改变它指向的值
例如:常量ref和常量指针之间的差异,c++; 我想知道C++中const REF和const指针之间的区别。 当我将某物声明为const ref时,我可以更改它的值吗? 还是常数在物体上? 因为我知道常量指针意味着你不能改变指针,但是你可以改变它指向的值,c++,pointers,reference,constants,C++,Pointers,Reference,Constants,例如: const char& a; // ? const char* a; // pointer is const const char*a;//指针为常量 错误,这是指向常量的指针。这: char*const a;//指针为常量 是一个常量指针。我更喜欢这样写:char-const*avs.char*const a 这允许您从右到左读取:char const*a是:a是指向常量char的指针,char*const a是:a是指向char的常量指针。如果我读其他代码,我只记得cons
const char& a; // ?
const char* a; // pointer is const
const char*a;//指针为常量
错误,这是指向常量的指针。这:
char*const a;//指针为常量
是一个常量指针。我更喜欢这样写:
char-const*a
vs.char*const a
这允许您从右到左读取:char const*a
是:a
是指向常量char
的指针,char*const a
是:a
是指向char
的常量指针。如果我读其他代码,我只记得constchar*a=charconsta*a
回答问题的另一部分:
当我将某物声明为const ref时,我可以更改它的值吗?
人们误用const-ref这个词实际上是指对常数的引用(因为常数引用毫无意义)。因此,const refconst char&a
意味着您无法更改该值。但是,如果您实际上想要一个常量引用,char&const a
,那么您可以更改该值,const
部分没有任何区别
对于指针,const char*a
表示不能将a
指向的值更改为。将其与char*const a
进行比较,这意味着您不能更改指针,但可以更改a
指向的值
弗雷德·康斯特
这意味着x为Fred对象添加别名,但x不能用于更改Fred对象
弗雷德·康斯特*p
Fred const*p表示“p指向一个常量Fred”:Fred对象不能通过p更改
弗雷德*康斯特p
Fred*const p表示“p是指向Fred的常量指针”:您不能更改指针p,但可以通过p更改Fred对象
可以合并最后一个以获得: 弗雷德·康斯特*康斯特p Fred const*const p表示“p是指向常数Fred的常数指针”:不能更改指针p本身,也不能通过p更改Fred对象
欲了解更多信息,请访问此网站。重新评估您“知道”的内容。测试它。
const char*a;//指针是常量
——不,引用对象是常量。虽然您的观察是正确的,但这并不能真正回答问题。