在String中新增移動建構函式和移動賦值運算子

2021-09-06 17:45:23 字數 2427 閱讀 6718

13.50 沒有定義析構函式

#include#include

#include

#include

#include

#include

using

namespace

std;

class

string

string(

char *c);

string(

const string&);

string& operator=(const string&);

string* begin() const

string* end() const

string(string &&);

string& operator=(string &&);

private

:

static allocatoralloc;

string *elements;

string *first_free;

};allocator

string::alloc;

string::string(

char *c)

string::string(

const string &s)

string& string::operator=(const string &s)

elements=data;

first_free=data+capacity;

return *this;}

string::string(string &&s):elements(s.elements),first_free(s.first_free)

string& string::operator=(string &&s)

}elements=s.elements;

first_free=s.first_free;

s.elements=s.first_free=nullptr;

return *this;}

intmain()

執行結果如下:  結果中出現移動建構函式是因為呼叫string建構函式返回的結果是右值

定義析構函式時:

#include#include

#include

#include

#include

#include

using

namespace

std;

class

string

string(

char *c);

string(

const string&);

string& operator=(const string&);

string* begin() const

string* end() const

//一定要定義析構函式,否則就算定義了移動建構函式還是不會呼叫,只會呼叫拷貝建構函式

~string()

}string(string &&) noexcept;

string& operator=(string &&) noexcept;

private

:

static allocatoralloc;

string *elements;

string *first_free;

};allocator

string::alloc;

string::string(

char *c)

string::string(

const string &s)

string& string::operator=(const string &s)

elements=data;

first_free=data+capacity;

return *this;}

string::string(string &&s) noexcept :elements(s.elements),first_free(s.first_free)

string& string::operator=(string &&s) noexcept

}elements=s.elements;

first_free=s.first_free;

s.elements=s.first_free=nullptr;

return *this;}

intmain()

return0;

}

執行結果如下:

類String的建構函式 析構函式和賦值函式

海康威視16年春季校招程式設計題目 題目 編寫類string的建構函式 析構函式和賦值函式,已知類string的原型為 class string 解答 1 普通建構函式 建構函式 建構函式是一種特殊的方法,主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的...

java中String類的建構函式

string類中的建構函式 string 構造乙個空字串物件 string byte bytes 通過byte陣列構造字串物件 string byte bytes,int offset,int length 通過byte陣列,從offset開始,總共length長的位元組構造字串物件 string ...

java中String類的建構函式

string類中的建構函式 string 構造乙個空字串物件 string byte bytes 通過byte陣列構造字串物件 string byte bytes,int offset,int length 通過byte陣列,從offset開始,總共length長的位元組構造字串物件 string ...