书籍—C++思想篇.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:4 大小:44KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

书籍—C++思想篇.doc

书籍—C++思想篇.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

应该继续坚持使用类的风格,可以不顾他的一些必要成员,而只定义他的数据成员和特定功能,应该早一点得到比较,这样做是明智的,也是极其简单的。如果让我选择,那么开始编程的最初几年,我选择小公司,小团队,因为我已经认真的分析过大项目进度慢的原因,这样的场合可能适合赚钱,但是不适合我在行业中的快速成长和取得更大的成功。抽象大概是这么一回事:把10000个规则变成1个规则让你去遵守,把炸五角大楼变成小鸟碰飞了一片树叶让你去理解(既容易操作又容易理解)。OOP是继承和动态绑定的变成方式,应该明白只有运用基类的指针或者引用来调用虚函数时才会体现出多态性,这就是动态绑定的应用方法,是编译器规定的。这样设计类:(1).类需要构造函数吗?因为每个类都要生成对象,还有就是他可以告诉我们对象真的生成了,要不我们要他有什么用呢!(2).类的数据成员是私有还是共有呢?这个问题相当重要,因为几乎所有人都不知道你的数据那个重要,那个不重要,那个可以修改,那个不能修改,包括你自己也会在无意中改变某一个数据,相信你一定会考虑用特定的方法让别人以合适的方式读你的数据,改变你的数据,而且确保这种行为是有意的并且十分安全!(3).类是否需要一个无参的构造函数?这里并不只是因为你不知道要构造对象的家伙会怎么做,而且如果你读一个默认的对象没有合理的初始化,很可能给你造成麻烦,并且据我所知,没有这个兄弟,leimingp;leimingp[10];都是编译器或者专家不允许的事情!(4).类的每个构造函数是否要初始化类的每一个数据成员啊?这个要看你自己了,按理说定义构造函数就是为了然你对类的数据成员进行工作前的组织,你应该对他们一一问候,不过并不是所有的成员你都应该初始化的,比如说统计类对象个数的静态成员啊!(5).类需要析构函数呢?因该说我对这位姐姐还是情有独钟的,因为她可以帮我记住一些程序运行完之后我可能忘记而且相当重要的事情,比如说销毁自由内存的占据,将本次操作自动的存盘等等,周到的就像女朋友,最重要的是他好可以提醒我对象的生命期结束了,天黑了,回家吧!(6).类是否需要一个虚析构函数呢?这不是吃饱了撑着吗,有析构不行还弄一个虚析构,有病啊?呵呵,听我说吗:给你个例子:classA{};classB:publicA{};A*C=newB;deleteC;如果这样你会发现delete只调用了A的析构函数,我的天呢,这里明明应该调用B的析构函数吗,要不B的析构函数要做的事情不就一件也不能做了吗!那要是需要释放内存怎么办啊?我的妈也,大姐要命啊!哈哈,如果作为基类的A这样定义:A{virtual~A();};j就会调用自动的调用B的析构函数了!但是我猜虚析构函数什么事情都不应该做,而且析构函数照样不能省!这里尽兴在说一下虚函数,又叫晚期动态绑定,虚函数主要是用作积累的指针或索引来调用派生类的同名成员,这些成员可能工作略微相差一点点,但是你可不要耍聪明定义一大堆的虚函数,据我所知,编译器遇到类中有虚函数时就会给类添加一个虚函数列表,里面存放每个虚函数的指针,这样早晚会把你的类累死(呵呵,也不至于,只是会增加很多无谓的空间消耗)!(7).类需要一个复制构造函数吗?大多数姐妹都会说我们不要,呵呵,不过我希望你听听我的建议:当你的类的对象在复制的过程中如果与将类的数据成员以及基类复制没有什么两样,那么你就没有必要选择了,否则你就认命吧!还有一种方法就是你看看复制构造成员的女朋友析构成员是否需要,要知道你宁拆十座庙,不毁一家亲,千万不要把他们分开哦!最后我要嘱托你的就是你也许不想让别人碰你的宝贝,比如说复制构造成员,那么你就应考虑把她私有化,这样有利这么一层关系,任谁也不敢对你男朋友怎么样,除非她不顾一切!(8).类是否需要一个赋值操作符呢?他与复制构造青梅竹马,你最好不要帮打鸳鸯!不过你还是要选择是否愿意让别人碰你的宝贝哦!(9).赋值操作能否考虑到所有情况?比如说:lei::&leioperator=(lei&s){delete[]this.data;this.data=newtype[s.data.lenth+1];strocpy(this.data,s,data);returnthis;}那么我想知道如果我让s=s;呢?结果你肯定知道喽!当然在这里你大可检查一下要赋值的对象是否是自己,你可以加一个条件if(this==s){},当然如果是我我会先赋值后销毁(提醒千万要赋值正确,不要赋索引或指针)。在此我并不是让你接受这个技术,而是让你明白要全面的考虑你所制造的工具会用于什么地方,千万不要等问题出来了才思考,也许过了制造工具的这一会儿,你在也不想到问题会处在这里!(10).类需要定义关系操作符吗?一般情况下不需要