上一页 1 ··· 4 5 6 7 8 9 10 11 12 13 下一页
摘要: 11 阅读全文
posted @ 2020-05-27 07:02 八转达人 阅读(130) 评论(0) 推荐(0)
摘要: 一.无虚继承 1.单个类,无虚函数 按成员定义的顺序排列 B::member1 B::member2 2.单个类,有虚函数 虚表指针在偏移0处 __vfptr B::member1 B::member2 3.单继承,无虚函数 先父类,再子类 B::member1 B::member2 D::memb 阅读全文
posted @ 2020-05-24 09:36 八转达人 阅读(228) 评论(0) 推荐(0)
摘要: 一.函数重载 1.函数名相同,参数列表不同(个数,顺序,类型) 2.vritual关键字、调用约定和返回值不做参考 二.函数覆盖(子类重写的虚函数覆盖了虚表中父类的虚函数,多态) 1.子类函数和父类函数声明一致(函数名,调用约定,参数列表,返回值) 2.父类函数有virtual关键字,子类可以不加v 阅读全文
posted @ 2020-05-24 07:53 八转达人 阅读(172) 评论(0) 推荐(0)
摘要: 1.构造顺序:按继承顺序,先继承的先构造,同样遵循先构造父类,再构造子类的规则。 2.析构顺序,与构造顺序相反。 3.内存分布:按继承顺序,先继承的分布在前,同样遵循先构造父类,再构造子类的规则。 class Sofa { public: Sofa() { cout << "Sofa()" << e 阅读全文
posted @ 2020-05-22 07:47 八转达人 阅读(200) 评论(0) 推荐(0)
摘要: 纯虚函数:函数声明后加=0,无实现。 有纯虚函数的类是抽象类,无法实例化抽象类 子类如果没有重写纯虚函数,那么子类也是抽象类,也无法实例化 用途:规范化接口,强制子类实现某些接口(成员函数) class Animal { public: virtual void Speak() = 0;//有纯虚函 阅读全文
posted @ 2020-05-21 20:52 八转达人 阅读(168) 评论(0) 推荐(0)
摘要: 多态:不关心子类对象的具体类型,调用子类对象自己的虚函数。 实现:虚函数。通过父类的指针或引用调用虚函数时才发生动态绑定。 虚表:虚函数构成的数组。 虚表指针:指向数组的指针 虚表指针的赋值时机:每个类在构造和析构时,会把虚表指针填成自己虚表的地址。子类构造时,先构造父类,于是先赋值为父类的虚表指针 阅读全文
posted @ 2020-05-20 07:55 八转达人 阅读(268) 评论(0) 推荐(0)
摘要: 基类:base 派生类:derived protected修饰的成员可以被类自身和派生类访问,类外不能访问 基类 子类是否可访问 类外是否可访问 public YES YES private NO NO protected YES NO 构造时,基类先构造,派生类后构造。 析构时,派生类先析构,基类 阅读全文
posted @ 2020-05-16 22:26 八转达人 阅读(123) 评论(0) 推荐(0)
摘要: 1.友元 1.1可以访问所有成员(公有,私有) 2.1友元不是类的成员,也不受它所在区域访问控制级别的约束 2.2普通函数,类的成员函数,整个类都可以声明为友元 2.3友元破坏了封装性,不到万不得已不要用 2.4运算符重载时适合用友元 class HasPtr;//前向声明 class Test { 阅读全文
posted @ 2020-05-15 08:03 八转达人 阅读(150) 评论(0) 推荐(0)
摘要: 1.常量成员函数 1.1把this指针的类型变为const type *const this 1.2常量成员函数内部不能修改其成员,但这只是语法层面的限制 void foo() const { //this->p = nullptr;//编译报错 HasPtr *ptr = (HasPtr*)thi 阅读全文
posted @ 2020-05-13 20:59 八转达人 阅读(208) 评论(0) 推荐(0)
摘要: 一.this指针 1.不同的对象,数据成员是独有的,成员函数是共享的 2.调用成员函数的时候,会默认传入this指针,this指针指向了调用函数的对象的首地址 3.this通过ecx传递,调用约定 __thiscall 4.成员函数的调用约定可以修改 5.this指针是class *const th 阅读全文
posted @ 2020-05-12 09:07 八转达人 阅读(268) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 13 下一页