随笔分类 -  <三>:C++继承和多态

C++继承和多态
摘要:class Base { public: Base() = default; ~Base() = default; }; class Data :public Base { public: Data(){} ~Data() = default; }; std::unique_ptr<Base> ba 阅读全文
posted @ 2023-02-04 12:05 Hello_Bugs 阅读(23) 评论(0) 推荐(0) 编辑
摘要:代码1 #include <iostream> using namespace std; class A{ public: A(int _a):ma(_a){ cout<<"A()"<<endl; } ~A(){ cout<<"~A()"<<endl; } protected: int ma; }; 阅读全文
posted @ 2022-11-29 21:51 Hello_Bugs 阅读(80) 评论(0) 推荐(0) 编辑
摘要:虚基类/抽象类 抽象类:有纯虚函数的类 代码1 class A{ public: int ma; protcted: int mb; private: int mc; } //B继承 A, class B : public A{ public: int md; potected: int me; p 阅读全文
posted @ 2022-11-29 15:16 Hello_Bugs 阅读(148) 评论(0) 推荐(0) 编辑
摘要:理解多态 多种多样的形态(静态多态,动态多态) 静态多态(编译时期) 1:函数重载 bool comparet(int ,int); bool compare(double,double); compare(100,100)->compare_int_int(); compare(1.0,2.0)- 阅读全文
posted @ 2022-11-28 15:15 Hello_Bugs 阅读(69) 评论(0) 推荐(0) 编辑
摘要:抽象类和普通类有什么区别? 抽象类一般不用作抽象实体类型 一般把上面类设计为抽象类? 基类 定义抽象类的唯一目的, 就是去建立派生类. 我们在抽象类基础上要定义出功能各异的派生类, 再用这些派生类去建立对象. 凡是包含纯虚函数的类都是抽象类. 纯虚函数不用实现, 故不能被调用, 抽象类无法建立对象. 阅读全文
posted @ 2022-11-28 14:06 Hello_Bugs 阅读(88) 评论(0) 推荐(0) 编辑
摘要:问题:是不是虚函数的调用就一定是动态绑定?不是的 1:在类的构造函数当中,调用虚函数,也是静态绑定(构造函数中对虚函数的调用不发生动态绑定) 2:如果不是通过指针或者引用变量来调用虚函数,那就是静态绑定 代码1 class Base { public: Base(int data=10):ma(da 阅读全文
posted @ 2022-11-28 11:13 Hello_Bugs 阅读(84) 评论(0) 推荐(0) 编辑
摘要:问题一:哪些函数不能实现成虚函数 虚函数依赖: 1:虚函数能产生地址,存储在vftable中 2:对象必须存储在 vfptr-> vftable-> 虚函数地址 **构造函数 ** 1:virtual + 构造函数 (NO,不可以在构造函数前加virtual 2:构造函数中 调用的任何函数,都是静态 阅读全文
posted @ 2022-11-28 08:48 Hello_Bugs 阅读(54) 评论(0) 推荐(0) 编辑
摘要:代码1 class Base { public: Base(int data=10):ma(data){ cout<<"Base()"<<endl; } void show(){cout<<"Base Show()"<<endl;} void show(int){cout<<"Base Show(i 阅读全文
posted @ 2022-11-27 21:53 Hello_Bugs 阅读(84) 评论(0) 推荐(0) 编辑
摘要:重载关系 一组函数要重载,必须处在同一个作用域中 ,而且函数名字相同,参数列表不同 代码1中的Base中的 show() 和show(int) 属于重载 代码2中的Base中的 show() 和Derive中的show()不属于重载不在同一个作用域下面 隐藏/重定义的关系(主要是指作用域隐藏) 在继 阅读全文
posted @ 2022-11-27 11:22 Hello_Bugs 阅读(62) 评论(0) 推荐(0) 编辑
摘要:派生类从继承可以继承来所有的成员(变量和方法) 除了构造函数和析构函数 派生类怎么初始化从基类继承来的成员变量的呢?通过调用基类的构造函数来初始化 派生类的构造函数和析构函数,负责初始化和清理派生类部分 派生类从基类继承来的成员的初始化和清理由谁负责?是由基类的构造和析构函数来负责 派生类对象的构造 阅读全文
posted @ 2022-11-27 10:02 Hello_Bugs 阅读(94) 评论(0) 推荐(0) 编辑
摘要:1:继承的本质和原理 2:派生类的构造过程 3:重载,覆盖,隐藏 4:静态绑定和动态绑定 5:多态,vfptr,vftable 6:抽象类的设计原理 7:多重继承以及问题 8:虚基类 vbptr 和vbtable 9:RTTI 10:C++四种类型强转 继承的本质和原理 1:代码的复用 类和类之间的 阅读全文
posted @ 2022-11-27 08:38 Hello_Bugs 阅读(64) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示