天天爱天天做天天做天天吃中文|久久综合给久合久久综合|亚洲视频一区二区三区|亚洲国产综合精品2022
汶上信息港
標題:
設計中的幾個問題
[打印本頁]
作者:
hbhdgpyz
時間:
2008-9-29 20:17
標題:
設計中的幾個問題
<P>C++編譯器會使原來編輯的一個空類變成一個非空的類,因為它會<FONT color=#ff0000>自動增加</FONT>并調用以下一些函數(shù):一個<FONT color=#0000ff>復制構造函數(shù)</FONT>、一個<FONT color=#0000ff>賦值算法符</FONT>及一對<FONT color=#0000ff>運算符地址</FONT>,如果沒有說明構造函數(shù)的話,它也會編制一個<FONT color=#0000ff>缺省的構造函數(shù)</FONT>。這些函數(shù)都是公有函數(shù)。如果類是從其它類<FONT color=#ff0000>派生</FONT>的,而且這個其他類又有一個析構函數(shù),則C++也會為這個類增加<FONT color=#0000ff>一個析構函數(shù)</FONT>。</P>
4 k2 r2 L- Q- ^9 H* q- I" x
<P>組織類的典型方法:</P>
" q$ k6 j3 k% v/ [4 n
<P>(1)正確地定義動態(tài)內存類的復制構造函數(shù)和賦值運算符。</P>
6 N+ T4 a0 n# ?; g# A
<P>(2)宜在構造函數(shù)中使用初始化而不要使用賦值。</P>
, N# m/ G; Y' ]5 a0 {
<P>(3)初始化表的成員應按它們在說明時出現(xiàn)的順序列出。</P>
* s4 d( I$ s- W8 s: w
<P>(4)把基灶的析構函數(shù)用作虛函數(shù)</P>
7 z. ~# @1 T: C* J
<P>(5)讓"operator="返回對*this的引用。</P>
- P4 J) W, @- `$ H+ H
<P>(6)正確對"operator="中所有數(shù)據(jù)成員的賦值。</P>
+ x6 a0 `" i% }# _7 W
<P>(7)注意檢查對"operator="中自身賦值問題。</P>
7 U7 X; Z+ t" P( ^/ V
<P><FONT color=#ff0000>怎樣建立和刪除對象</FONT>?可以通過對象名直接建立對象,也可以用對象指針以及new和構造函數(shù)一同作用建立動態(tài)對象。直接建立的對象在生存期結束時自動消失(對象的生存期在遇到右括號時結束),而動態(tài)對象的生存期是可控的,要用delete來刪除。</P>
- G m5 q- D5 n& i& {) C7 {; I
<P><FONT color=#ff0000>對象的初始化和賦值有什么不同呢?</FONT> 建立一個對象時,對象的狀態(tài)(即數(shù)據(jù)成員的取值)是不確定的,<FONT color=#ff0000>對象的<FONT color=#0000ff>初始化</FONT>就是將對象的狀態(tài)進行確定</FONT>,即對其成員的取值進行確定。我們要讓一個對象一出現(xiàn)(建立)時就要有明確的狀態(tài)。這就是對象的初始化。而<FONT color=#0000ff>賦值</FONT><FONT color=#ff0000>是在對象被建立以后再對其數(shù)據(jù)成員進行賦值</FONT>,如果對象沒有被初始化,那么將有一段時間對象的狀態(tài)是不確定的.</P>
9 y2 q3 k' }( [% ?2 K( c. g' P
<P>設計類接口的基本原則:(這些東東在實踐中再深入理解吧)</P>
$ l+ J$ K) H& ?0 e3 R
<P>(1)盡量使類接口即完整又最緊湊(完整緊湊)</P>
& Q2 ^' R4 I6 V! G/ W
<P>(2)注意成員函數(shù)、全局函數(shù)和友元函數(shù)的差別(成全友(有)別)</P>
. l+ g* i7 [1 O& _/ U$ K
<P>(3)在公共接口中不用數(shù)據(jù)成員(公共接口不用數(shù)員)</P>
9 n% i# d* K* h$ H7 z
<P>(4)盡量多用const(const多多)</P>
# ^- A' T+ m& ~7 t3 h
<P>(5)通過引用而不是值傳遞和返回對象(通過引用)</P>
8 w# v% |# R+ L7 l4 h4 O
<P>(6)在返回對象時不要試圖返回引用(返回對象)</P>
- y" q( [# i- t- H
<P>(7)慎重選擇函數(shù)重載或參數(shù)缺省</P>
" r7 ?2 q! V, l( G$ ^3 D8 C8 W
<P>(8)避免對指針和數(shù)值類型重載</P>
" Z/ ], F5 w) F9 ~. |% q3 \
<P>(9)謹防潛在的兩義性問題。</P>
0 i' X U* f/ e: Q) f5 Z! X6 \( u
<P>(10)明確禁用無端隱含生成的成員函數(shù)</P>
0 B' N/ y; U s4 k0 `+ s
<P>(11)利用結構劃分全局名空間。</P>
歡迎光臨 汶上信息港 (http://www.vancelump.com/)
Powered by Discuz! X3.5