賦值和初始化不同以及安全拷貝

2021-06-09 18:43:24 字數 360 閱讀 6155

string 類的原型如下

class string

;string::~string()

string::string(const char *str)

else//當初始化串存在的時候,為m_data申請同樣大小的空間存放該串;

}string::string(const string &other)//拷貝建構函式,功能與建構函式類似。

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

string::showstring()//由於m_data是私有成員,物件只能通過public成員函式來訪問;

cout

初始化 賦值 拷貝

折騰我挺長一段時間,基本挺明白了,先來個區別說明 賦值操作是在兩個已經存在的物件間進行的,而初始化是要建立乙個新的物件,並且其初值 於另乙個已存在的物件。編譯器會區別這兩種情況,賦值的時候呼叫過載的賦值運算子,初始化的時候呼叫拷貝建構函式。如果類中沒有拷貝建構函式,則編譯器會提供乙個預設的。這個預設...

直接初始化和拷貝初始化

定義 示例 string dots 10,直接初始化 string s dots 直接初始化 string s2 dots 拷貝初始化 string null book 9 999 99999 9 拷貝初始化 string nines string 100,9 拷貝初始化注 直接初始化實際上是要求編...

賦值運算子 拷貝初始化和this指標

一 賦值運算子和拷貝建構函式 過載技術 賦值運算子和拷貝建構函式有編譯器預設提供,但如果想做更複雜的事,需要過載。1.下面用乙個簡單的例子先區分一下賦值運算子和拷貝建構函式 includeusing namespace std class alpha 沒有引數的建構函式 alpha int d da...