Make better use of initialization list

This commit is contained in:
Baptiste Wicht 2013-12-04 18:21:24 +01:00
parent 9095ac83cf
commit 2b08078ecd

View File

@ -11,39 +11,28 @@ public:
typedef const CharT* const_iterator; typedef const CharT* const_iterator;
private: private:
CharT* _data;
size_t _size; size_t _size;
size_t _capacity; size_t _capacity;
CharT* _data;
public: public:
//Constructors //Constructors
basic_string(){ basic_string() : _size(0), _capacity(1), _data(new CharT[1]) {
_size = 0;
_capacity = 1;
_data = new CharT[_capacity];
_data[0] = '\0'; _data[0] = '\0';
} }
basic_string(const CharT* s){ basic_string(const CharT* s) : _size(str_len(s)), _capacity(_size + 1), _data(new CharT[_capacity]) {
_size = str_len(s);
_capacity = _size + 1;
_data = new CharT[_capacity];
memcopy(_data, s, _capacity); memcopy(_data, s, _capacity);
} }
explicit basic_string(size_t __capacity){ explicit basic_string(size_t __capacity) : _size(0), _capacity(__capacity), _data(new CharT[_capacity]) {
_size = 0; _data[0] = '\0';
_capacity = __capacity;
_data = new CharT[_capacity];
} }
//Copy constructors //Copy constructors
basic_string(const basic_string& rhs){ basic_string(const basic_string& rhs) : _capacity(rhs._capacity), _size(rhs._size), _data(new CharT[_capacity]) {
_capacity = rhs._capacity;
_size = rhs._size;
_data = new CharT[_capacity];
memcopy(_data, rhs._data, _size + 1); memcopy(_data, rhs._data, _size + 1);
} }
@ -67,11 +56,7 @@ public:
//Move constructors //Move constructors
basic_string(basic_string&& rhs){ basic_string(basic_string&& rhs) : _size(rhs._size), _capacity(rhs._capacity), _data(rhs._data) {
_size = rhs._size;
_capacity = rhs._capacity;
_data = rhs._data;
rhs._size = 0; rhs._size = 0;
rhs._capacity = 0; rhs._capacity = 0;
rhs._data = nullptr; rhs._data = nullptr;