找回密码
 注册

QQ登录

只需一步,快速开始

设计中的几个问题

[复制链接]
发表于 2008-9-29 20:17:40 | 显示全部楼层 |阅读模式
<P>C++编译器会使原来编辑的一个空类变成一个非空的类,因为它会<FONT color=#ff0000>自动增加</FONT>并调用以下一些函数:一个<FONT color=#0000ff>复制构造函数</FONT>、一个<FONT color=#0000ff>赋值算法符</FONT>及一对<FONT color=#0000ff>运算符地址</FONT>,如果没有说明构造函数的话,它也会编制一个<FONT color=#0000ff>缺省的构造函数</FONT>。这些函数都是公有函数。如果类是从其它类<FONT color=#ff0000>派生</FONT>的,而且这个其他类又有一个析构函数,则C++也会为这个类增加<FONT color=#0000ff>一个析构函数</FONT>。</P>
& d4 L+ h, b1 D8 [  z  p<P>组织类的典型方法:</P>
* I5 u: _, g" ~3 H$ A. _<P>(1)正确地定义动态内存类的复制构造函数和赋值运算符。</P>
' K3 h/ E# L4 p, E<P>(2)宜在构造函数中使用初始化而不要使用赋值。</P>+ [7 Y: v, ?! L8 P
<P>(3)初始化表的成员应按它们在说明时出现的顺序列出。</P>- s( g$ P! l# E2 h7 u
<P>(4)把基灶的析构函数用作虚函数</P>
) f1 V- K6 }9 Q" B) r/ K<P>(5)让"operator="返回对*this的引用。</P>
2 x& P& U+ e1 S0 w/ @: z, F! U5 O4 \1 }* n# h<P>(6)正确对"operator="中所有数据成员的赋值。</P>
9 K3 |- I2 f/ Y  u6 d<P>(7)注意检查对"operator="中自身赋值问题。</P>
5 @5 a6 P: }9 X" k/ ~$ B<P><FONT color=#ff0000>怎样建立和删除对象</FONT>?可以通过对象名直接建立对象,也可以用对象指针以及new和构造函数一同作用建立动态对象。直接建立的对象在生存期结束时自动消失(对象的生存期在遇到右括号时结束),而动态对象的生存期是可控的,要用delete来删除。</P>
, V, ^- P/ {, p$ ^8 G7 O8 }* k* k<P><FONT color=#ff0000>对象的初始化和赋值有什么不同呢?</FONT> 建立一个对象时,对象的状态(即数据成员的取值)是不确定的,<FONT color=#ff0000>对象的<FONT color=#0000ff>初始化</FONT>就是将对象的状态进行确定</FONT>,即对其成员的取值进行确定。我们要让一个对象一出现(建立)时就要有明确的状态。这就是对象的初始化。而<FONT color=#0000ff>赋值</FONT><FONT color=#ff0000>是在对象被建立以后再对其数据成员进行赋值</FONT>,如果对象没有被初始化,那么将有一段时间对象的状态是不确定的.</P>
. k. B5 c/ g- _, [. q8 r% }- s5 A$ M<P>设计类接口的基本原则:(这些东东在实践中再深入理解吧)</P>
! l# F9 b8 H# D8 C) j2 Z! g<P>(1)尽量使类接口即完整又最紧凑(完整紧凑)</P>) c9 w! K( E% f0 ?6 @6 r
<P>(2)注意成员函数、全局函数和友元函数的差别(成全友(有)别)</P>1 P! x" s+ T% S$ o3 e
<P>(3)在公共接口中不用数据成员(公共接口不用数员)</P>
4 a$ n. H  r: K* t  c) p<P>(4)尽量多用const(const多多)</P>  h+ ?' i9 L' h# m7 V
<P>(5)通过引用而不是值传递和返回对象(通过引用)</P>
5 `5 M4 Q# s0 O6 @<P>(6)在返回对象时不要试图返回引用(返回对象)</P>
$ F4 {( }- {) W5 _" i<P>(7)慎重选择函数重载或参数缺省</P>7 m( i+ N7 U- L5 y( U
<P>(8)避免对指针和数值类型重载</P>
/ T; q/ j2 x/ Y<P>(9)谨防潜在的两义性问题。</P>
. K, }5 o# s& H# n  O4 \<P>(10)明确禁用无端隐含生成的成员函数</P>
! s- i/ A# T' F9 P- g<P>(11)利用结构划分全局名空间。</P>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|本地广告联系: QQ:905790666 TEL:13176190456|Archiver|手机版|小黑屋|汶上信息港 ( 鲁ICP备19052200号-1 )

GMT+8, 2026-5-2 16:27

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表