如何解决按位常量和成员函数常量之间的区别
我正在读这本书,名为《 Effective C ++第三版55种特定的改进方法》,而在阅读本书时,我遇到了constness主题,但我无法理解重载之间的区别具有按位和成员函数常数的const运算符[],
const char operator[](size_t t)
const{
return text[t];
}
和重载的非常量[],它不需要对常量做任何事情
char operator[](size_t t)
{
return text[t];
}
我尝试过在有和没有const和non-const重载[]的情况下进行一些操作,但是仍然没有看到任何区别,这仅仅是用来使代码可读吗?还是有什么区别呢?
这是我的String类
class String
{
int len = 0;
char text[];
public :
String( const char c[])
{
strcpy(text,c);
len = strlen(text);
}
int length();
const char operator[](size_t t)
const{
return text[t];
}
char operator[](size_t t)
{
return text[t];
}
};
解决方法
const方法可以在const对象上调用,因为它们不会修改对象:
例如,如果您有Foo类:
class Foo {
...
const methodA();
methodB();
...
};
并像这样使用它:
Foo objectA;
const Foo objectB;
您可以在objectA上调用两个方法,但只能在objectB上调用methodA():
objectB.methodA();
objectB.methodB(); // <-- invalid
对运营商同样适用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。