2019年11月19日

C++中对C的扩展学习新增内容———面向对象(继承)纯虚函数和虚析构函数以及纯虚析构函数

摘要: 纯虚函数和虚析构函数以及纯虚析构函数 纯虚函数(抽象类): 1、当一个类包含了纯虚函数,这个类就不能用来创建对象了。这个类叫做抽象类。 2、当一个类继承了父类的话,必须去重写父类的纯虚函数。如果子类不重写父类的纯虚函数,子类仍然是抽象类。 3、纯虚函数的实现: class Animal { publ 阅读全文

posted @ 2019-11-19 21:24 YanShnY 阅读(330) 评论(0) 推荐(0) 编辑

C++中对C的扩展学习新增内容———面向对象(继承)函数扩展性及虚函数机制

摘要: 1、c语言中的多态,动态绑定和静态绑定 void do_speak(void(*speak)()) { speak(); } void pig_speak() { cout << "猪叫..." << endl; } void cat_speak() { cout << "猫叫..." << end 阅读全文

posted @ 2019-11-19 21:08 YanShnY 阅读(230) 评论(0) 推荐(0) 编辑

2019年10月29日

C++中对C的扩展学习新增内容———面向对象(继承)多继承和虚继承

摘要: 多继承和虚继承 1、多继承的优缺点 (1) 多继承可以复用多个类的代码(函数,变量)。 (2) 多继承会带来二义性问题。 2、菱形继承问题 1、菱形问题会造成空间浪费。 2、菱形继承问题会产生二义性。 3、虚继承 (1) 当发生虚继承的时候,编译器会在子类中安插一个vbptr指针。 (2) 指针指向 阅读全文

posted @ 2019-10-29 14:53 YanShnY 阅读(220) 评论(0) 推荐(0) 编辑

C++中对C的扩展学习新增内容———面向对象(继承)继承中对象的构造和析构

摘要: 继承中对象的构造和析构 1、编译器会按照子类和父类大小分配内存。 2、先调用父类构造函数、再调用子类构造函数。 3、析构函数调用顺序和构造函数调用顺序相反。 代码验证: 运行结果 2、初始化列表在继承中的作用 1、子类初始化的时候,编译器默认调用父类无参构造函数。 2、如果父类没有无惨构造函数,则需 阅读全文

posted @ 2019-10-29 11:29 YanShnY 阅读(215) 评论(0) 推荐(0) 编辑

C++中对C的扩展学习新增内容———面向对象(继承)

摘要: 面向对象(继承) 1、继承的作用 (1) 减少冗余代码 使用继承之前: 使用继承之后: (2) 扩展类 (3) 修改类 2、继承中的权限 继承中同样会有private、public、protected三种权限: (1)、Private 类外不能访问,子类中同样也不能访问。 (2)、Public 类外 阅读全文

posted @ 2019-10-29 11:11 YanShnY 阅读(195) 评论(0) 推荐(0) 编辑

2019年10月28日

C++中对封装的语法支持——this指针

摘要: this指针 1、this概念 (1) This指针就是用于成员函数区分调用对象。 (2) This指针由编译器自动传递,无须手动传递,函数内部隐藏了this指针参数,本类类型的指针。 (3) 编译器不会为静态成员函数传递this指针。 2、this特点 1、非静态成员函数第一个隐藏参数就是this 阅读全文

posted @ 2019-10-28 21:15 YanShnY 阅读(273) 评论(0) 推荐(0) 编辑

2019年10月27日

C++中对封装的语法支持——重载运算符

摘要: 重载运算符 1、对于自定义类型,编译器不知道运算规则,而重载运算符会将两个对象相加转换为函数调用。 2、运算符重载转换的函数调用,函数名字是固定的规则。 (1) 如果重载+号运算符,函数名字就是:operator+ (2) 如果重载-号运算符,函数名字就是:operator- (3) 如果重载<号运 阅读全文

posted @ 2019-10-27 21:01 YanShnY 阅读(206) 评论(0) 推荐(0) 编辑

C++中对封装的语法支持——友元

摘要: 友元 1、友元就是授权给某个函数、每个成员函数、某个类具有访问类内部私有成员的权限。 2、为什么用友元?友元可以允许某个类、函数直接访问类内部私有数据,减少函数调用开销,提高效率。 3、友元函数不是成员函数,友元函数没有this指针。 阅读全文

posted @ 2019-10-27 20:59 YanShnY 阅读(170) 评论(0) 推荐(0) 编辑

C++对象模型结论

摘要: C++对象模型 1、C++对象模型探讨的是对象成员存储问题。 2、结论: (1) 、类内部的函数(静态成员函数,非静态成员函数)都不在对象内部 ,不占用对象大小。 (2) 类内部的静态变量不占用对象大小。 (3) 类内部的非静态成员变量占用对象大小。 (4) 空类的大小是1个字节。 阅读全文

posted @ 2019-10-27 20:58 YanShnY 阅读(154) 评论(0) 推荐(0) 编辑

C++中对封装的语法支持——静态成员

摘要: 静态成员(变量与函数) 1、静态成员变量的语法、访问、特点(共享、类内声明类外初始化) 静态成员变量在class中只做声明,并没有初始化所以不会分配内存。 (1) 非静态成员变量必须通过对象来访问。 (2) 静态成员变量可以通过对象访问、也可以通过类名访问。 (3) 非静态成员变量每个对象独有。 ( 阅读全文

posted @ 2019-10-27 20:57 YanShnY 阅读(243) 评论(0) 推荐(0) 编辑

导航