首页 > 编程语言 >Effective C++总结

Effective C++总结

时间:2023-04-25 11:13:56浏览次数:38  
标签:总结 函数 Effective 继承 C++ -- 对象 接口

1.视C++为一个语言联邦
c++是C、面向对象C++、泛型编程、以及stl的集合。
2.尽量以const\enum\inline替换#define
3.尽可能使用const
4.确定对象使用前已经被初始化
5.了解C++默认生成并调用哪些函数
7.为多态基类声明virtual析构函数
8.别让异常逃离析构函数
9.绝不在构造和析构过程中调用virtual函数
10.令operator=返回一个reference to this
11.在operator=中处理自我赋值
12.复制对象时勿忘记每一个成员
13.以对象管理资源(RAII--智能指针)
14.在资源管理类中小心copying行为
15.在资源管理类中提供堆原始资源的访问--get()函数
16.成对使用new和delete
17.以独立语句将new出来的对象放入智能指针
18.让接口更容易被正确使用,不易被误用
19.设计class犹如设计type
20.以常量引用传递参数替代值传参数
21.必须返回对象时,不要试图返回一个引用
22.将成员变量声明为private
23.用非成员非友元函数替换成员函数--封装性
26.尽量可能延后变量定义出现的时间
27.尽量少做转型动作
28.避免返回handles指向的对象内部成分,
29.为“异常安全”努力是值得的
  基本承诺:异常发生时,程序内的所有对象和数据结构时一致的
  强烈保证:要么完全成功,要么不改变任何外部状态
31.将文件间的编译依赖关系降至最低
  handle+impl;
  接口类+impl;
32.确定public继承表达的时is-a关系
34.区分接口继承和实现继承
  纯虚函数--接口继承
  虚函数--接口继承和默认的实现继承
  非虚函数--指定接口继承和强制实现继承,子类不应该重新定义这类函数
36.绝不重新定义继承而来的non-virtual函数
37.绝不重新定义继承而来的默认参数值
38.通过组合建模has-a 或者 private继承
39.谨慎使用private继承,多使用组合
40.谨慎使用多重继承

标签:总结,函数,Effective,继承,C++,--,对象,接口
From: https://www.cnblogs.com/lyjps/p/17352020.html

相关文章

  • C++STL学习经典
    C++语言学习之STL的组成STL有三大核心部分:容器(Container)、算法(Algorithms)、迭代器(Iterator),容器适配器(containeradaptor),函数对象(functor),除此之外还有STL其他标准组件。通俗的讲:容器:装东西的东西,装水的杯子,装咸水的大海,装人的教室……STL里的容器是可容纳一些数据的模板类。算法:......
  • 【20230424】logstash生产开发总结汇总
    logstash生产开发总结汇总本文主要讲使用Logstash生产开发操作、遇到问题及处理时间:20230424logstash版本:logstash7.8.1官网:https://www.elastic.co/cn/logstash/目录logstash生产开发总结汇总一、基础开发简单的启动脚本字段过滤解析Json嵌套时间转换类templa......
  • Ceph性能测试总结
    Ceph性能测试总结测试目的:通过对ceph集群块接口常见性能指标进行简单测试,达到以下几个目的:了解当前集群配置方案对硬件性能的利用情况;验证集群性能计算公式的正确性;识别集群性能瓶颈点;为后续性能优化提供部分参考;测试指标:块接口IOPS,带宽,时延硬盘性能一般使用以下几个......
  • 离散数学第一部分内容总结
    一、命题逻辑命题:能够判断真假的陈述句称作命题。一个命题的“结果”,称为真值。例:X>Y不是命题,因为无法判断真假。明天会下雨是命题,可以判断真假。(但真值无法确定) 命题变元:命题标识符如仅是表示任意命题的位置标识,就称为命题变元。它是位置标识,不是能判真假的陈述句。......
  • Redis 报错总结一
    Redis报错总结一Invalidargumentduringstartup:Failedtoopenthe.conffile:redis.window.conf【1】cmd运行redis-server.exeredis.windows.conf报错:提示找不到配置文件。加上文件路径:可以启动成功【2】解决办法【2.1】便捷启动1cd到redis安装目录,输入以......
  • 4.24总结
    --基础查询--1.查询多个字段/*1.查询多个字段SELECT字段列表FROM表名;SELECT*FROM表名;--查询所有数据去除重复记录SELECTDISTINCT字段列表FROM表名;3.起别名AS:AS也可以省略*/droptableifexistsstu;CREATETABLEstu(idint,namevarchar(20),......
  • BusTub 通关总结
    Project#0-C++Primer是个前期热身项目,考察对C++的掌握。要求实现一个并发Trie支持的kv存储,存储map到任何类型的value的stringkey。Trie中的每个节点存储一个键的单个字符,并且可以有多个子节点,这些子节点表示不同的可能的下一个字符。当到达一个键的结尾时,将设......
  • 4.24每日总结
       今天是第一阶段验收,王老师说这次的展示的功能比较单一,场景应用的构想也不够完善。今天看到一个组用python写的人脸识别,效果很好,与我们web端相比确实体现了差距。这几天会抓紧时间完善功能和场景应用的问题。......
  • [Week 18] 每日一题(C++,动态规划,线段树,数学)
    目录[Daimayuan]T1最长公共子序列(C++,DP,二分)输入格式输出格式数据范围输入样例输出样例解题思路[Daimayuan]T2喵喵序列(C++,序偶)题目描述输入格式输出格式样例输入样例输出样例说明数据范围双倍经验解题思路:[Daimayuan]T3漂亮数(C++,字符串)输入描述输出描述输入样例输出样例解题......
  • C++变量的大小
    #include<iostream>usingnamespacestd;intmain(){ cout<<"==========BASICVARIABLESSIZELIST=========="<<endl; cout<<"short:"<<sizeof(short)<<"bytes"<<endl; ......