#include <iostream>
#include <string>
using namespace std;
class String {
public:
String();
String(const char []);
String(const String &);
int Compare(const String &) const;
int Compare(const char[]) const;
String & Copy(const String &);
String & Copy(const char[]);
size_t Len() const;
String & Conc(const char[]);
String & Conc(const String &);
String Display() const;
private:
size_t Letters;
size_t Slots;
char* Fazah;
};
String::String() {
Letters = 0;
Slots = Letters;
Fazah = new char [Slots + 1];
Fazah[0]= '\0';
}
String::String(const char otherVar[]) {
Letters = strlen(otherVar);
Slots = Letters;
Fazah = new char [Slots + 1];
strcpy(Fazah, otherVar);
}
String::String(const String & otherVar) {
Slots = otherVar.Slots;
Letters = otherVar.Letters;
Fazah = new char [Slots + 1];
strcpy (Fazah, otherVar.Fazah);
cout <<"Copy const"<< endl;
}
int String::Compare (const String & otherVar) const {
return strcmp (Fazah, otherVar.Fazah);
}
int String::Compare(const char otherVar []) const {
return strcmp (Fazah, otherVar);
}
inline size_t String::Len ()const {
return Letters;
}
String String::Display() const {
return* this;
}
String & String::Copy(const String & otherVar) {
delete[] Fazah;
Letters = otherVar.Letters;
Slots = otherVar.Letters;
Fazah = new char [Slots + 1];
return *this;
}
String & String::Copy(const char otherVar []) {
delete[] Fazah;
Letters = strlen (otherVar);
Slots = Letters;
Fazah = new char [Slots + 1];
return *this;;
}
String & String::Conc(const String & otherVar) {
//delete[] Fazah;
Letters = Letters + otherVar.Letters;
Slots = Slots + otherVar.Slots;
Fazah = new char [Slots + 1 ];
return*this;
}
String & String::Conc(const char otherVal[]) {
Slots = Slots + Letters;
Letters = Letters + strlen(otherVal);
Fazah = new char [Slots + 1];
return* this;
}
int main() {
String Str2("abcdefg");
String Len(Str2);
}
我已经学习了几个星期的c ++,所以我还是比较新的。在这些时候,我只是不确定该如何解决我的问题,这是其中一个时代。这甚至不是语法错误,因此它使修复更加困难。
这可能是因为我还是很陌生;在我的脑袋String Len(Str2)
应该返回字符串的长度,但它不会返回cout <<"Copy const"<< endl
。不知道该怎么做。
答案 0 :(得分:1)
该行
String Len(Str2);
创建String
的另一个实例。它不会调用Len
成员函数。你需要使用:
size_t len = Str2.Len();
答案 1 :(得分:0)
这不是你如何称呼成员函数。
String Len(Str2);
表示您只是在复制构造函数{{String
的名称下创建另一个Len
,Str2
的内容将被复制到该String::String (const String & otherVar)
1}},你写的就会被调用。
您应该使用Str2.Len()
来调用您编写的相应成员函数inline size_t String::Len ()const
。
然后你应该使用cout
在控制台上打印它:
std::cout<<Str2.Len();
答案 2 :(得分:0)
要打印出来,请在main
中更改:
String Len(Str2);
分为:
std::cout << Str2.Len() << std::endl;