const - 常见错误
程序员文章站
2024-03-22 13:56:34
...
const - 常见错误(一)
报错:
error C2662: “Man::play”: 不能将“this”指针从“const Man”转换为“Man &”
#include <iostream>
using namespace std;
class Man
{
public:
Man()
{
}
void play()
{
cout<<"I am playing ..."<<endl;
}
};
int main(void)
{
const Man man;
man.play(); /* 这里会报错 */
system("pause");
return 0;
}
原因:
man 是 const 对象, 但是却调用了非 const 方法.
类比: 专一男, 不能去夜店玩耍[因为这样很危险, 可能导致专一男变心]
解决方案:
方案一:
把 const Man man; 修改为: Man man;
方案二:
把 play 方法, 修改为 const 方法
const - 常见错误(二)
正确的代码demo1
#include <iostream>
using namespace std;
class Man
{
public:
Man()
{
}
void play()
{
cout<<"I am playing ..."<<endl;
}
};
void test(Man &man)
{
man.play();
}
int main(void)
{
Man man1;
test(man1);
system("pause");
return 0;
}
正确的代码demo2
#include <iostream>
using namespace std;
class Man
{
public:
Man()
{
}
void play() const
{
cout<<"I am playing ..."<<endl;
}
};
void test(const Man &man)
{
man.play();
}
int main(void)
{
const Man man1;
test(man1);
Man man2;
test(man2);
system("pause");
return 0;
}
总结:
原因: 非 const 引用, 不能对 const 变量进行引用
注意: const 引用, 可以对非 const 变量进行引用
解决方案:
修改引用变量, 或者被引用的变量
以上画图理解
结语:
加油, 继续努力!!! 量变引起质变
时间: 2020-06-21-11-41
下一篇: 笛卡尔积与多表查询