我重载了运算符==,并且不适用于指针
class my_string {
private:
char* _ch;
int _length;
public:
...
...
bool operator ==(const my_string& right) {
if (this->_length == right._length) {
for (int i = 0; i < this->_length; i++) {
if (_ch[i] != right._ch[i]) {
return false;
}
}
}
else
return false;
return true;
}
};
int main(){
my_string* f = "hello";
my_string* g = "hello";
if(f==g){
cout<<"done";
}
return 0;
}
答案 0 :(得分:1)
这里有几个问题。
首先,如果类型为f == g
或string
,则调用string*
时会有所不同。如果类型为string*
,则实际上不是在比较字符串,而是在比较指针本身(很少有意义)。如果类型为string*
,则需要使用*f == *g
进行比较(*
会取消引用指针并为您提供所指向的实际对象)。
除此之外,这里不需要指针,并且代码my_string* f = "hello"
不应编译。
如果您想要一个指向字符串的指针,则需要使用
my_string str = "hello";
my_string* ptr = &str;
但是同样,我不明白为什么在这里使用指针。