#include <iostream>
using namespace std;
class String
{
public:
String(char const *chars = "");
String(String const &str);
~String();
void display() const;
String &operator++(); // 这个是前加价,返回的是引用
String const operator++(int); // 这个是后加加,返回的是copy ,后加加是执行完这一行之后再进行加加,
String &operator--();
String const operator--(int);
private:
char *ptrChars;
};
String &String::operator++()
{
for(std::size_t i = 0; i < std::strlen(ptrChars); ++i)
{
++ptrChars[i];
}
return *this;
}
String const String::operator++(int)
{
String copy(*this);
++(*this);
return copy;
}
void String::display() const // 这是一个显示函数的构造函数的重载,直接显示指针里的内容,
{
cout << ptrChars << endl;
}
String::String(char const *chars)
{
chars = chars ? chars : "";
ptrChars = new char[std::strlen(chars) + 1];
std::strcpy(ptrChars,chars);
}
String::String(String const &str)
{
ptrChars = new char[std::strlen(str.ptrChars) + 1];
std::strcpy(ptrChars,str.ptrChars);
}
String::~String()
{
delete[] ptrChars;
}
int main()
{
int i =3;
i++;
++i;
cout << i << endl;
String s("abcdef");
s.display();
++s;
s.display(); // 输出的是bcdefg,
s++;
s.display(); // 是在++s之后又进行的加加,输出的cdefgh
cout << endl;
String x("abc");
x.display(); // abc
String x2(++x);
x2.display(); // bcd
String x3(x++);
x3.display(); // bcd
x.display(); // cde
return 0;
}
自增自减操作符
最新推荐文章于 2023-12-17 22:50:14 发布