栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2022.5.2 看书笔记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022.5.2 看书笔记

C++primer:

1.如果派生类希望基类的某个函数的全部重载版本对它都是可见的,那么它应该覆盖该函数的全部版本或者一个也不覆盖。
   如果只想在派生类使用该函数的一种版本,那么可以使用using声明,然后只对该版本重新定义就行。
2.基类的析构函数要定义为虚函数,因为有时候一个动态分配指针的静态类型和动态类型不同,这时候调用delete去删除它,
   如果基类的析构函数不是虚函数,那么就无法动态绑定正确类型的析构函数版本。
3.如果一个基类有析构函数,那么例外的,它并不总是需要拷贝和赋值操作。
4.如果一个基类定义了虚析构函数,那么在这个继承体系内,编译器都将不会替你合成移动操作,即使你显式的
   使用=defaul也不会合成。 这种情况下,如果不定义移动构造函数,那么在需要移动操作的时候,
   有拷贝运算作为替代。
5.合成的析构函数和合成的构造函数逐层的构造和销毁派生体系内的类对象。
6.如果基类中某种操作是派生类不可访问的或者在基类里被定义为删除的,那么派生类里对应的操作也是删除的。
   类似的还有几种导致派生类成员是删除的的情况。
7.实际编程中,一种操作(构造析构拷贝移动运算符等基础操作)如果基类中没有,那么派生类里往往也不会定义一种操作。
8.如果真的需要移动操作,那么要在基类中同时显式地定义拷贝操作和移动操作。基类的派生类会自行继承这些操作
   (通过在自己的合成的版本里自动地调用这些操作)。
9.派生类的拷贝和移动构造函数要将基类部分的成员的拷贝工作委托给基类的拷贝和移动构造函数。
10.派生类的拷贝赋值运算符和移动赋值运算符无法委托,要在函数体内显式的调用基类的对应运算符为基类部分赋值。
11.派生类的析构函数只用销毁自身部分的成员就行,对直接基类的析构函数的调用是自动隐式进行的。
12.使用对基类构造函数的using声明会直接为派生类创造一个构造函数。这个合成的构造函数委托了基类的构造函数。
     派生类自己的成员则全部默认初始化。
13.通过使用对基类构造函数的using声明来试图继承一个基类的构造函数时,例外发生了。这个using声声明不会像
     平常那样根据位置的不同改变构造函数的访问级别。
14.把一个派生类赋值给基类会将派生类的派生类部分"切掉"。因此指望直接用容器存储一大堆具有继承关系的类
     的对象是不现实的。
15.所以,当希望在容器中存放具有继承关系的对象时,实际上存放的是基类的指针(智能指针更好),这样就可以
     畅通的使用动态绑定了。
16.C++的面向对象编程有一个悖论,就是无法直接使用对象进行面向对象编程,而是要一直借助于指针和引用。
     这样就会让程序很复杂(很无奈),以至于往往需要定义一些辅助类来处理如此复杂的情况。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849521.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号