BZ易风

导航

 

2021年8月23日

摘要: 多态的成立条件 有继承 子类重写父类虚函数函数 返回值,函数名字,函数参数,必须和父类完全一致(析构函数除外) 子类中virtual关键字可写可不写,建议写 类型兼容,父类指针,父类引用 指向 子类对象 多态分类 静态多态 函数重载 动态多态 虚函数 继承关系 c++支持编译时多态(静态多态)和运行 阅读全文
posted @ 2021-08-23 21:59 BZ易风 阅读(237) 评论(0) 推荐(0) 编辑
 
摘要: 1。对照表来看 代码: #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Animal { public: int m_Age; }; //虚基类 Sheep class Sheep:virt 阅读全文
posted @ 2021-08-23 20:40 BZ易风 阅读(198) 评论(0) 推荐(0) 编辑
 
摘要: 菱形继承解决方案 利用虚继承 操作的时共享的一份数据 sheepTuo内部结构 vbptr 虚基类指针 v:virtual b:base p:pointer 指向一张 虚基类表 通过表找到偏移量 找到共有的数据 如图:类Sheep和Tuo保留的只是虚函数指针,只有Animal里才有数据 实例: #d 阅读全文
posted @ 2021-08-23 17:59 BZ易风 阅读(74) 评论(0) 推荐(0) 编辑
 
摘要: 两个派生类继承同一个基类而又有某个类同时继承者两个派生类,这种继承被称为菱形继承,或者钻石型继承。 这种继承所带来的问题: 羊继承了动物的数据和函数,鸵同样继承了动物的数据和函数,当草泥马调用函数或者数据时,就会产生二义性。 草泥马继承自动物的函数和数据继承了两份,其实我们应该清楚,这份数据我们只需 阅读全文
posted @ 2021-08-23 17:42 BZ易风 阅读(94) 评论(0) 推荐(0) 编辑
 
摘要: 同时继承多个基类 class A : public B1, public B2,…. 引发二义性问题 想解决二义性问题,就需要通过作用域来进行区分 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; cla 阅读全文
posted @ 2021-08-23 17:38 BZ易风 阅读(39) 评论(0) 推荐(0) 编辑
 
摘要: 1.构造函数 2.析构函数 3.operator= 阅读全文
posted @ 2021-08-23 17:28 BZ易风 阅读(22) 评论(0) 推荐(0) 编辑
 
摘要: 类似非静态成员函数处理 如果想访问父类中的成员,加作用域即可 1.子类可以继承静态成员属性 如果有重名静态成员,就近原则 静态成员方法 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Bas 阅读全文
posted @ 2021-08-23 17:21 BZ易风 阅读(74) 评论(0) 推荐(0) 编辑
 
摘要: 处理方法 当子类成员和父类成员同名时,子类依然从父类继承同名成员 如果子类有成员和父类同名,子类访问其成员默认访问子类的成员(本作用域,就近原则) 在子类通过作用域::进行同名成员区分(在派生类中使用基类的同名成员,显示使用类名限定符) 成员属性 直接调用先调用子类,如果想调用父类 需要作用域 成员 阅读全文
posted @ 2021-08-23 17:02 BZ易风 阅读(154) 评论(0) 推荐(0) 编辑
 
摘要: 调用原则: 子类对象在创建时会首先调用父类的构造函数 父类构造函数执行完毕后,才会调用子类的构造函数 当父类构造函数有参数时,需要在子类初始化列表(参数列表)中显示调用父类构造函数 析构函数调用顺序和构造函数相反 1.顺序 1.1 子类创建对象时,先调用父类的构造,然后调用自身构造 1.2 析构顺序 阅读全文
posted @ 2021-08-23 16:32 BZ易风 阅读(90) 评论(0) 推荐(0) 编辑
 
摘要: 1.打开vs2019开发人员命令提示 进入问价夹,dir查看文件在不在 然后输入固定语法: cl /d1 报告单个类的布局[跟类名] 属于哪个cpp文件 cl /d1 reportSingleClassLayoutSon test.cpp 可以看到 阅读全文
posted @ 2021-08-23 16:23 BZ易风 阅读(113) 评论(0) 推荐(0) 编辑
 
摘要: 1.子类中 会继承父类的私有成员,只是被编译器隐藏起来了,无法访问父类的私有成员,但是sizeof会给私有成员空间 子类会继承父类中所有的内容 ,包括了 私有属性 只是我们访问不到,编译器给隐藏了 cl /d1 reportSingleClassLayout类名 文件名 #define _CRT_S 阅读全文
posted @ 2021-08-23 16:12 BZ易风 阅读(26) 评论(0) 推荐(0) 编辑
 
摘要: public:公有继承 protected:保护继承 private:私有继承 关系: 不管公有继承 保护 还是私有 基类中的私有属性 ,都不可以继承下去 公有继承 父类中的protected 在子类中是 protected 父类中的public 在子类中是 public 保护继承 父类中的prot 阅读全文
posted @ 2021-08-23 15:40 BZ易风 阅读(30) 评论(0) 推荐(0) 编辑
 
摘要: 减少代码的重复 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class BasePage { public: void Header() { cout << "公共头部" << endl; } }; 阅读全文
posted @ 2021-08-23 15:30 BZ易风 阅读(24) 评论(0) 推荐(0) 编辑
 
摘要: 1. 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目 阅读全文
posted @ 2021-08-23 15:17 BZ易风 阅读(112) 评论(0) 推荐(0) 编辑
 
摘要: l =, [], () 和 -> 操作符只能通过成员函数进行重载 l << 和 >>只能通过全局函数配合友元函数进行重载 l 不要重载 && 和 || 操作符,因为无法实现短路规则 阅读全文
posted @ 2021-08-23 15:11 BZ易风 阅读(49) 评论(0) 推荐(0) 编辑
 
摘要: 用法一: #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> using namespace std; class myPrint { public: //()重载 void operator()(string 阅读全文
posted @ 2021-08-23 15:01 BZ易风 阅读(66) 评论(0) 推荐(0) 编辑
 
摘要: 1. int strcmp(const char *s1, const char *s2); 功能:比较 s1 和 s2 的大小,比较的是不相同的第一个字符ASCII码大小。 参数: s1:字符串1首地址 s2:字符串2首地址 返回值: 相等:0 大于:>0 小于:<0 实例: #define _C 阅读全文
posted @ 2021-08-23 14:52 BZ易风 阅读(156) 评论(0) 推荐(0) 编辑
 
摘要: 1.1 返回数组索引的引用 1.2 int & operator[](int index) 1.3 return this->pAddress[index] int& operator[](int index) { return this->p_Address[index]; } 阅读全文
posted @ 2021-08-23 14:36 BZ易风 阅读(47) 评论(0) 推荐(0) 编辑
 
摘要: 一个类默认创建时 默认构造、析构、拷贝构造和operator=赋值运算符重载(浅拷贝) 进行简单的值传递 1.1 系统默认给类提供 赋值运算符写法 是简单值拷贝 1.2 导致如果类中有指向堆区的指针,就可能出现深浅拷贝的问题 #define _CRT_SECURE_NO_WARNINGS #incl 阅读全文
posted @ 2021-08-23 13:48 BZ易风 阅读(59) 评论(0) 推荐(0) 编辑
 
摘要: 智能指针的实现 Person类有showAge 成员函数 如果new出来的Person对象,就要让程序员自觉的去释放 delete 有了智能指针,让智能指针托管这个Person对象,对象的释放就不用操心了,让智能指针管理 为了让智能指针想普通的Person*指针一样使用 就要重载 -> 和* #de 阅读全文
posted @ 2021-08-23 11:19 BZ易风 阅读(158) 评论(0) 推荐(0) 编辑