Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <iostream>
- #include <stdexcept>
- class String
- {
- public:
- friend const String operator+(const String&, const String&);
- friend const String operator+(const String&, const char*);
- friend std::ostream& operator<<(std::ostream&, const String&);
- String(size_t size = 0);
- String(unsigned int, unsigned int);
- String(const String&);
- String(const char*);
- String(String&&) noexcept;
- ~String() { dealloc(); }
- String& operator=(const String&);
- String& operator=(String&& rv) noexcept;
- String& operator=(const char*);
- String& operator+=(const String&);
- String& operator+=(const char*);
- char& operator[](const size_t) const;
- bool operator<(const String&) const;
- bool operator>(const String&) const;
- bool operator==(const String&) const;
- bool operator<(const char*) const;
- bool operator>(const char*) const;
- bool operator==(const char*) const;
- String& operator++();
- String& operator--();
- bool isEmpty() const { return data == nullptr; }
- size_t size_() const { return this->size; }
- private:
- size_t get_size(const char*) const;
- void alloc(const size_t);
- void dealloc();
- void copy(const char*);
- void copy(const String&);
- char* data;
- size_t size;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement