我有以下代码:
StringC StringC::operator+(const StringC& other) const
{
strcat(ps,other.ps);
return ps;
};
使用相关标题如下:
class StringC {
private:
char* ps;
public:
StringC(char const *);
StringC& operator=(const StringC&);
StringC operator+(const StringC& other) const;
void Print();
我的理解是,在const
函数中使用operator+
会阻止我更改ps
和other
,但我可以更改两者他们还在。
我尝试了以下内容:
void Class1::Method1() const
{
Variable = Variable + 1;
};
void Class1::Method1(const int v)
{
v = 0;
Variable = v + 1;
};
这个错误正如预期的那样,我假设我在使用const时遗漏了一些东西,但是在使用strcat
时会发现第一个代码出错?
答案 0 :(得分:8)
我的理解是,在
const
函数中使用operator+
会阻止我更改ps
和other
,但我可以更改两者他们还在。
这是正确的。但是,您无法更改ps
或other.ps
,而这不是您正在做的事情。你正在做的是改变ps
指向的内容,这不是const。
所以,在operator+
中ps
的类型是char * const
(指向char的常量指针)而不是const char *
(指向常量char的指针)