c++面向对象编程必备“良方”有哪些呢?
药方1 必需时刻明白面向对象编程中要扮演的两个角色,一个就是你,类的设计者,一个就是用户,类的使用者,你的设计是针对用户而言的,当然你也可能是身兼两职,同时是设计者又是用户。
药方2 设计一个类时,将声明放于头文件,定义放在cpp文件中,因为类是给用户使用的,将声明放在头文件中,用户便可以方便使用,而定义在cpp文件中主要是为了两点,一提高编译效率,二避免用户包含文件后发生重定义。
药方3 声明完一个类后必须以分号结束,因为声明完一个类后后面还可以加一个对象名,用来声明该类的实例化对象,分号‘;’ 不是表示声明的结束,而是表示声明该类对象的结束,如果单纯一个分号表示没有声明任一对象。
药方4 避免在构造函数里实例化本类,否则会发生递归死循环。
药方5 避免在析构函数里delete本类实例,否则会发生递归死循环。
药方6 inline成员函数必须在头文件里定义,因为inline函数本质是内联展开的,跟#define预编译类似。 药方7 hpp头文件里的类或函数必须在hpp头文件里定义,因为hpp的本质是让编译器只对hpp文件里的内容编译一次,然后将目标代码附到cpp目标文件中。
药方8 hpp头文件里的全局变量必须声明为static 否则会发生重编译,static本质是让编译器只定义一次。 药方9 const 数据成员必须要在初始化列表中赋初值(c++11中也可以直接=号赋值),因为它是const变量。
药方10 const成员函数不允许你修改类的数据成员。
因为它就是不予许。
药方11 指向const对象的指针访问成员函数时,只能访问const成员函数,因为指向const对象的指针不予许你修改它所指向的内存的值,而const成员函数不修改类对象数据内存的值,它们俩正好互相吻合。 药方12 static数据成员需要在类外定义,它本质上并非属于包含它的类。
药方13 static成员函数不包含this指针,因为它本质上并非属于本类。
药方14 如果类中的某一指针数据成员指向分配的内存空间,则一般的做法是定义析构函数,在析构函数里释放它所指的内存空间。因为类的生命周期结束时,如果没有定义析构函数,则会调用编辑器合成的析构函数,而该合成的析构函数不会智能地释放数据成员指针所指向的内存,所以必须在类结束之前释放它指向的内存。
还有另一种做法就是将该成员指针定义为智能指针类型。 药方15 操作符重载不能重载两个内置类型的对象,至少要有一个为类类型或枚举类型。因为重载两个内置类型的对象完全没有必要。
药方16 赋值操作符重载(operator=),不宜设为虚函数,因为赋值操作符中的指针或引用函数参数有可能是指向基类对象也有可能是指向派生类对象,因此容易发生混淆。
药方17 在继承层次中,基类应该定义一个虚析构函数,因为非虚析构函数不会被继承,而虚析构函数会在派生类定义析构函数时发生重定义(就是虚表指针指向了派生类的析构函数)。在利用基类指针实现多态时,基类指针指向了新开辟(new)的派生类对象,这时由于基类的析构函数是虚的,所以再利用基类指针释放(delete)掉派生类对象内存时,就可以顺利地执行派生类的析构函数了。
药方18 模板类或函数,在头文件中声明,并且,定义也要在此头文件中(一般采用hpp头文件),因为模板特化机制实际上是编译时利用模板参数产生可以兼容实例的目标代码附于使用
的cpp文件中(特化),从而实现多态,而不能预先产生目标代码就兼容实例的。
药方19 声明友元之前必须对该声明友元的对象,进行声明或定义。因为你让我跟他交朋友,可以,但你必需让我知道他的为人吧。
药方20 你所知的只是沧海一粟,切莫过于骄傲和自满。
Hash:7425c688c1b52f46367d20e442faf1e0e446a2b1
声明:此文由 Scarlett 分享发布,并不意味本站赞同其观点,文章内容仅供参考。此文如侵犯到您的合法权益,请联系我们 kefu@qqx.com
相关推荐
-
酒店工程部培训课程有哪些 酒店工程部培训课程有哪些方面
酒店工程部培训课程有哪些 酒店工程部培训课程有哪些方面 1. 酒店工程部培训课程有哪些2. 酒店工程部培训课程有哪些方面3. 酒店工程管理课程4. 酒店工程部培训计划表5. 酒店工程部技能培训6. 酒店工程部培训计划7. 酒店工程部培训内容8. 酒店工程部员工培训课程9. 酒店工程培训计划和培训内容10. 酒店工程部培训课程有哪些项目11. 酒店工程部培训课程有哪些内容
-
松江方塔园对有哪些景点 松江方塔公园里面有哪些景点
松江方塔园对有哪些景点 松江方塔公园里面有哪些景点 1. 松江方塔公园里面有哪些景点2. 去松江方塔公园怎么走3. 松江方塔公园门票多少4. 松江方塔公园地图5. 松江方塔公园的历史6. 松江方塔公园营业时间7. 上海松江区方塔公园地址8. 松江方塔公园的照壁9. 松江方塔公园开放时间
-
美国新奥尔良有哪些好玩的地方 美国新奥尔良有哪些好玩的地方呢
美国新奥尔良有哪些好玩的地方 美国新奥尔良有哪些好玩的地方呢 1. 美国新奥尔良有哪些好玩的地方呢2. 新奥尔良在美国哪个位置3. 美国新奥尔良景点4. 美国新奥尔良市怎么样5. 美国新奥尔良旅游6. 美国新奥尔良有哪些好玩的地方呢图片7. 美国新奥尔良有哪些好玩的地方呢英文8. 新奥尔良旅游必去景点9. 新奥尔良有什么好玩的
-
象山好玩的地方有哪里 象山有什么好玩的地方?哪些景点必去?
象山好玩的地方有哪里 象山有什么好玩的地方?哪些景点必去? 宁波象山有什么好玩的象山有什么好玩的地方?哪些景点必去?宁波象山有什么好玩的地方?象山有什么好玩的地方象山有什么好玩的地方宁波象山网红打卡地点象山有哪些好玩的景点?
-
在大连有哪些景点最适合去 大连有哪些景区必须去的地方呢
在大连有哪些景点最适合去 大连有哪些景区必须去的地方呢 1. 大连有哪些景区必须去的地方呢2. 大连有哪些必去的景点3. 大连的旅游景点都在哪4. 大连最好景点是哪里5. 去大连必须去的旅游景点有哪几个6. 大连有哪些景区必须去的地方呢英文7. 大连附近还有什么旅游景点8. 大连旅游的地方有哪些9. 大连有哪些景区必须去的地方呢英语
-
旅行达人必备实用的App有哪些呢?
旅行达人必备实用的App有哪些呢? 想了解下旅行达人推荐的旅行App,有谁可以说说吗?旅游达人 指导下 我与女友两人 游哈尔滨 雪乡 漠河 雾凇岛
-
日照哪里好玩,必玩的有哪些地方呢
日照哪里好玩,必玩的有哪些地方呢 一、日照哪里好玩,必玩的有哪些地方呢二、日照金沙滩海水浴场门票多少三、日照有哪些地方好玩的,几天能玩好四、日照和连云港哪个好玩?五、日照有哪些旅游景点?六、日照旅游必玩的几个景点排行,好玩的都在海边了吗?七、日照旅游必备物品和必去景点
-
象山晚上好玩的地方 象山有什么好玩的地方?哪些景点必去?
象山晚上好玩的地方 象山有什么好玩的地方?哪些景点必去? 象山旅游景点哪里好玩象山有什么好玩的地方?哪些景点必去?象山影视城晚上有什么好玩的?浙江省象山有什么好玩的地方?宁波象山有什么好玩的象山有什么好玩的地方
-