**塊:
#include
#include
class
cmystring
;cmystring::
cmystring
(char
*pdata)
else
}cmystring::
cmystring
(const cmystring &str)
cmystring::
~cmystring()
cmystring& cmystring::
operator=(
const cmystring& str)
void cmystring::
print()
void
test1()
void
test2()
void
test3()
intmain
(int argc,
char
* ar**)
輸出口結果:
./a.out
test1 begins:
the expected result is: hello world.
the actual result is: hello world.
test2 begins:
the expected result is: hello world.
the actual result is: hello world.
test3 begins:
the expected result is: hello world.
the actual result is: hello world.
the expected result is: hello world.
the actual result is: hello world.
改進: 為什麼建構函式的pdata為null 要申請乙個char字元的空間?
**塊:
#include
#include
class
cmystring
;cmystring::
cmystring
(char
*pdata)
else
}cmystring::
cmystring
(const cmystring &str)
cmystring::
~cmystring()
cmystring& cmystring::
operator=(
const cmystring& str)
void cmystring::
print()
void
test1()
void
test2()
void
test3()
intmain
(int argc,
char
* ar**)
輸出結果:
./a.out
test1 begins:
free(): invalid pointer
aborted (core dumped)
分析: 因為初始化的時候沒有對,成員指標 (m_pdata)賦值為null.
改進: 在建構函式 m_pdata = null;
**塊;
#include
#include
class
cmystring
;cmystring::
cmystring
(char
*pdata)
else
}cmystring::
cmystring
(const cmystring &str)
cmystring::
~cmystring()
cmystring& cmystring::
operator=(
const cmystring& str)
void cmystring::
print()
void
test1()
void
test2()
void
test3()
intmain
(int argc,
char
* ar**)
輸出結果:
./a.out
test1 begins:
the expected result is: hello world.
the actual result is: hello world.
test2 begins:
the expected result is: hello world.
the actual result is: hello world.
test3 begins:
the expected result is: hello world.
the actual result is: hello world.
the expected result is: hello world.
the actual result is: hello world.
分配記憶體失敗 ,資料安全性解法 :
方法1 :
乙個簡單的辦法是我們先用new分配新內容再用delete釋放已有的內容。這樣只在分配內容成功之後再釋放原來的內容,也就是當分配記憶體失敗時我們能確保cmystring的例項不會被修改。
方法2:
我們還有乙個更好的辦法是先建立乙個臨時例項,再交換臨時例項和原來的例項。
分析 : 申請個臨時物件,利用退棧,自動呼叫析構進行處理。 如果由於記憶體不足丟擲諸如bad_alloc等異常,我們還沒有修改原來例項的狀態,因此例項的狀態還是有效的,這也就保證了異常安全性。
C語言程式設計 9 4 字元統計
輸入乙個字串 其長度不超過81 分別統計其中26個英文本母出現的次數 不區分大 小寫字母 並按字母出現次數從高到低排序,若次數相同,按字母順序排列。字母輸出格式舉例,例如 a 3,表示字母a出現3次,c 0表示字母c沒有出現。輸入 第一行為輸入,佔一行,輸入的字串可能含有空格 輸出 第二行為輸出,佔...
程式語言系列 1 字串 (C C )
c 語言中,字串實際上是使用 0 字元終止的一維字元陣列 include 1.建立 char greeting 6 char greeting hello 2.獲取字串長度 len strlen str1 3.複製 strcpy str1,str2 把str2複製到str1 4.連線 strcat ...
IO流 2 字元流
構造方法 filewriter file file filewriter string filename filereader file file filereader string filename 寫資料方法 一次寫乙個字元 write int c 一次寫乙個字元陣列write char cbu...