首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++primer学习笔记(六)

C++primer学习笔记(六)

作者头像
震八方紫面昆仑侠
发布2020-07-23 14:53:13
1.1K0
发布2020-07-23 14:53:13
举报
  1. virtual函数是基类希望派生类重新定义的函数,希望派生类继承的函数不能为虚函数。根类一般要定义虚析构函数。
  2. 派生类只能通过派生类对象访问protected成员,不能用基类对象访问。基类定义为virtual就一直为虚函数,派生类写不写virtual都是虚函数。用做基类的类必须是已定义的。
  3. 存在虚函数+指针或引用==产生多态。非虚函数编译时就按指针或引用或对象类型确定。可以使用域操作符强制调用基类虚函数【虚中调虚】。基类虚函数和派生类的默认实参要一致。
  4. 派生类继承基类的访问控制标号【何种方式继承】无论是什么,不影响派生类使用基类成员,但影响使用派生类的用户访问基类成员。类使用接口继承还是实现继承对派生类用户具有重要含义。
  5. 友元关系不继承。
  6. 派生类指针可自动转换到基类指针,反之不行。如果知道基类到派生类的转换【这种转换是基类地址赋给派生类指针】是安全的【就是说心里清楚基类指针指向的确实是派生类】,可以使用static_cast强制编译器进行转换。dynamic_cast是在运行时进行检查。
  7. 构造函数无法继承,派生类构造数还要初始化基类【否则只能用合成构造函数初始化】。初始化列表和初始化的顺序无关。只能初始化直接基类。
  8. 赋值操作符必须防止自身复制【赋值之前会先释放自身的内容,万一是自己, 那不就丢失了】。派生类析构函数不负责清除基类成员,每个析构函数只负责清除自己成员。派生类指针的静态类型和动态类型不一致时【基类指针指向派生类是时】,为保证删除指针调用合适的析构函数【多态】,基类析构必须为virtual。
  9. 构造函数是对象动态类型确定之前运行的,不需要定义为virtual。
  10. 引用、对象、指针的静态类型决定了能够完成的行为,动态类型有多的功能也无法使用。派生类应避免与基类成员名字冲突。局部作用域中声明的函数不会重载全局域的函数。派生类定义的函数也不重载基类函数【想重载要么不定义,要么全定义】。using作用域。
  11. 纯虚函数==抽象类==无法创建对象 派生类对象复制到基类时派生类对象将被切掉【而指针和引用不会】。
  12. 对象不支持动态绑定,指针和引用支持但使用起来麻烦,解决方法是定义包装类或句柄类【提供到其它类接口的类】。像使用指针一样使用句柄而不用管理它指向的对象。类似智能指针的方法建立指针句柄。
  13. 关联容器的构造函数是我们能够提供比较函数的名字:std::multiset<Sales_item, Comp【比较器】> items(compare【比较函数】);
  14. template <typename T>模板定义以关键字template开始【旧程序中可能用class】,后接模板形参表,模板形参表是由尖括号扩住的一个或多个模板形参的列表,以逗号分隔。表中可以有非类型形参,实例化时绑定值。
  15. 通过在成员前面加上typename告诉编译器将成员当做类型。泛型代码两个原则:1.模板形参是const引用 2.函数体中只用<比较
  16. 模板形参数量自由,可以设定返回值为一个形参。显示提供实参:long a=sun<long>(i, lng)
  17. export关键字能够指明给定的定义可能会需要在其他文件中产生实例化。非类型形参的模板实参:template<int hi, int wid> 实例化时必须是常量表达式 Screen<24,80>
  18. 模板中的友元表示任何实例可以访问任何实例。模板类中可以有模板类成员。
  19. 模板类中的static成员由同一实例化的对象共享,但不同模板形参的实例化对象间不共享。
  20. 模板特化:template<> 模板名<模板形参>函数形参表 函数体 特化类 也可以只特化类中某个成员 部分特化:多个模板形参,特化某个形参【编译器会优先选择特化的】。匹配同样好时,非模板版本优先。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL从删库到跑路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档