Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.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++ 如果在C+中有两个名称相同的方法,一个标记为const,另一个不标记为const,那么如何解析方法调用+;? void testMethod(){ cout_C++_Methods_Constants - Fatal编程技术网

C++ 如果在C+中有两个名称相同的方法,一个标记为const,另一个不标记为const,那么如何解析方法调用+;? void testMethod(){ cout

C++ 如果在C+中有两个名称相同的方法,一个标记为const,另一个不标记为const,那么如何解析方法调用+;? void testMethod(){ cout,c++,methods,constants,C++,Methods,Constants,如果通过引用const或指向const的指针调用成员函数,或者直接在类型为const-限定的对象上调用成员函数,则将选择限定为const的重载。否则,将选择未限定为const的重载 void testMethod(){ cout<<"Normal Method"; } void testMethod() const{ cout<<"Const Method"; } 在更正式的术语中,C++11标准第9.3.2/3段规定(在引号中,cv代表const-或-

如果通过引用
const
或指向
const
的指针调用成员函数,或者直接在类型为
const
-限定的对象上调用成员函数,则将选择限定为
const
的重载。否则,将选择未限定为
const
的重载

void testMethod(){
  cout<<"Normal Method";
}

void testMethod() const{
     cout<<"Const Method";
}
在更正式的术语中,C++11标准第9.3.2/3段规定(在引号中,
cv
代表
const
-或-
volatile
,出于提问的目的,您可以忽略
volatile
部分):

仅当对象表达式(5.2.5)为 作为cv限定值或小于成员函数的cv限定值[…]


如果在
const
对象上调用它,就会得到
const
版本,
const
或多或少地对应于
const ClassName*const this
第一个参数,而不是
ClassName*const this
。@chris:如果将
const
始终放在对象它符合条件。也就是说:
ClassName const*const this
vs
ClassName*const this
@MatthieuM.,没错,我通常只喜欢它放在左边,因为这是我习惯的,我的大脑在从左到右阅读它并把东西放在适当的位置上做得相当好(同样,因为我习惯于这样)。对于不习惯的人,我同意。早点开始很好。谢谢安迪。这很有帮助。@user2425443:很高兴你发现它很有帮助
X x;
x.testMethod(); // Calls the non-const version
X const& y = x;
y.testMethod(); // Calls the const version
X* z = &x;
z->testMethod(); // Calls the non-const version
X const w;
w.textMethod(); // Calls the const version