摘要: 1 问题 C++ 中是否允许一个类继承自多个父类? 2 C++ 中的多重继承 C++ 支持编写多重继承 一个子类可以拥有多个父类 子类拥有所有父类的成员变量 子类继承所有父类的成员函数 子类对象可以当作任意父类对象使用 多重继承的语法规则 多重继承的本质与单继承相同 class Derived : 阅读全文
posted @ 2020-10-30 19:47 nxgy 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 1 什么是抽象类? 面向对象中的抽象概念 在进行面向对象分析时,会发现一些抽象的概念。如:图形的面积如何计算? 在现实中需要知道具体的图形类型才能求面积,所以对**概念上的“图形”**求面积是没有意义的! Shape 只是一个概念上的类型,没有具体的对象 class Shape { public: 阅读全文
posted @ 2020-10-30 19:46 nxgy 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 1 class 与 struct class 是一种特殊的 struct 在内存中,class 依旧可以看作变量的集合 class 与 struct 遵循相同的内存对齐规则 class 中的**成员函数(是函数,只可能存放在代码段中)与成员变量(是数据,存放于三个数据区中:栈,堆,全局数据区)**是 阅读全文
posted @ 2020-10-30 19:43 nxgy 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 1 多态的概念 面向对象中期望的行为 根据实际的对象类型判断如何调用重写函数,而不是指针/引用的类型 父类指针(引用)指向 父类对象则调用父类中定义的函数 子类对象则调用子类中定义的重写函数 面向对象中的多态的概念 根据实际的对象类型决定函数调用的具体目标 同样的调用语句在实际运行时有多种不同的表现 阅读全文
posted @ 2020-10-30 19:42 nxgy 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 1 父子间的赋值兼容 子类对象可以当作父类对象使用(兼容性) 子类对象可以直接赋值给父类对象 子类对象可以直接初始化父类对象 父类指针可以直接指向子类对象:多态 父类引用可以直接引用子类对象 示例:子类对象的兼容性 Demo #include <iostream> #include <string> 阅读全文
posted @ 2020-10-30 19:40 nxgy 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 1 问题 子类中是否可以定义父类中的同名成员?如果可以,如何区分?如果不可以,为什么? 示例1:同名成员变量 Demo #include <iostream> #include <string> using namespace std; class Parent { public: int mi; 阅读全文
posted @ 2020-10-30 19:39 nxgy 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 1 问题 创建子类对象时如何初始化父类成员?父类构造函数和子类构造函数有什么关系? 2 子类对象的构造 子类中可以定义构造函数 子类构造函数 必须对继承而来的成员进行初始化 直接通过初始化列表或者赋值的方式进行初始:这种方式对于子类不能访问的父类成员不起作用,必须使用其他方法(调用父类构造函数) 调 阅读全文
posted @ 2020-10-30 19:38 nxgy 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 1 问题 子类是否可以直接访问父类的私有成员? 根据面对对象理论:子类拥有父类的一切属性和行为 ⇒ 子类能够直接访问父类的私有成员 根据 C++ 语法:外界(子类也是父类的外界)不能直接访问类的 private 成员 ⇒ 子类不能直接访问父类的私有成员 示例:继承中的访问级别 Dmeo #inclu 阅读全文
posted @ 2020-10-30 19:36 nxgy 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 1 再论类型转换 标准数据类型之间会进行隐式的类型安全转换 转换规则 char -> ↓ int -> unsigned int -> long -> unsigned long -> float -> double short -> 示例1:基本数据类型之间的隐式类型转换 Demo #includ 阅读全文
posted @ 2020-10-30 19:34 nxgy 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1 问题 下面的代码有没有区别?为什么? 在工程上没有区别,编译器进行了优化 i++; // i的值作为返回值,i自增1 ++i; // i自增1,i的值作为返回 示例1:i++ 和 ++i 的区别 Demo #include <iostream> #include <string> using n 阅读全文
posted @ 2020-10-30 19:33 nxgy 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 1 逗号操作符 逗号操作符(,)可以构成逗号表达式 逗号表达式用于将多个子表达式连接为一个表达式 逗号表达式的值为最后一个子表达式的值 逗号表达式中的前 N-1 个子表达式可以没有返回值 逗号表达式按照从左向右的顺序计算子表达式的值 exp1,exp2,exp3,...,expN 示例1:逗号表达式 阅读全文
posted @ 2020-10-30 19:32 nxgy 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 1 逻辑运算符规则 逻辑运算符(&& ,|| ,!)的原生语义 操作数只有两种值(true 和 false) 逻辑表达式不用完全计算就能确定最终值 最终结果只能是 true 或者 false 示例1:逻辑表达式 Demo #include <iostream> #include <string> u 阅读全文
posted @ 2020-10-30 19:31 nxgy 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 1 内存泄漏问题 动态申请堆空间,用完后不归还 C++ 语言中没有垃圾回收机制 指针无法控制所指堆空间的生命周期 示例1:内存泄漏 Demo #include <iostream> #include <string> using namespace std; // 测试类 class Test { 阅读全文
posted @ 2020-10-30 19:30 nxgy 阅读(78) 评论(0) 推荐(0) 编辑
摘要: [toc] 阅读全文
posted @ 2020-10-30 19:29 nxgy 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 1 需求 编写一个函数 函数可以获得斐波那契数列每项的值 每调用一次返回一个值 函数可根据需要重复使用 for(int i = 0; i < 10; ++i) { cout << fib() << endl; } 2 解决方案 第一个解决方案 Demo #include <iostream> #in 阅读全文
posted @ 2020-10-30 19:28 nxgy 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 1 问题 string 类对象还具备 C 语言方式字符串的灵活性么?还能直接访问单个字符么? 不可以直接访问单个字符,但可以通过重载数组访问操作符来进行访问 2 字符串类的兼容性 string 类最大限度地考虑了 C 字符串的兼容性 可以按照使用 C 字符串的方式使用 string 对象 示例1:用 阅读全文
posted @ 2020-10-30 19:27 nxgy 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 1 历史遗留问题 C 语言不支持真正意义上的字符串 C 语言用字符数组和一组函数实现字符串操作 C 语言不支持自定义类型,因此无法获得字符串类型 2 解决方案 从 C 到 C++ 的进化引入了自定义类型 在 C++ 中可以通过类完成字符串类型的定义 【问题】C++ 中的原生类型系统是否包含字符串类型 阅读全文
posted @ 2020-10-30 19:26 nxgy 阅读(129) 评论(0) 推荐(0) 编辑