摘要:
1 问题 C++ 中是否允许一个类继承自多个父类? 2 C++ 中的多重继承 C++ 支持编写多重继承 一个子类可以拥有多个父类 子类拥有所有父类的成员变量 子类继承所有父类的成员函数 子类对象可以当作任意父类对象使用 多重继承的语法规则 多重继承的本质与单继承相同 class Derived : 阅读全文
摘要:
1 什么是抽象类? 面向对象中的抽象概念 在进行面向对象分析时,会发现一些抽象的概念。如:图形的面积如何计算? 在现实中需要知道具体的图形类型才能求面积,所以对**概念上的“图形”**求面积是没有意义的! Shape 只是一个概念上的类型,没有具体的对象 class Shape { public: 阅读全文
摘要:
1 class 与 struct class 是一种特殊的 struct 在内存中,class 依旧可以看作变量的集合 class 与 struct 遵循相同的内存对齐规则 class 中的**成员函数(是函数,只可能存放在代码段中)与成员变量(是数据,存放于三个数据区中:栈,堆,全局数据区)**是 阅读全文
摘要:
1 多态的概念 面向对象中期望的行为 根据实际的对象类型判断如何调用重写函数,而不是指针/引用的类型 父类指针(引用)指向 父类对象则调用父类中定义的函数 子类对象则调用子类中定义的重写函数 面向对象中的多态的概念 根据实际的对象类型决定函数调用的具体目标 同样的调用语句在实际运行时有多种不同的表现 阅读全文
摘要:
1 父子间的赋值兼容 子类对象可以当作父类对象使用(兼容性) 子类对象可以直接赋值给父类对象 子类对象可以直接初始化父类对象 父类指针可以直接指向子类对象:多态 父类引用可以直接引用子类对象 示例:子类对象的兼容性 Demo #include <iostream> #include <string> 阅读全文
摘要:
1 问题 子类中是否可以定义父类中的同名成员?如果可以,如何区分?如果不可以,为什么? 示例1:同名成员变量 Demo #include <iostream> #include <string> using namespace std; class Parent { public: int mi; 阅读全文
摘要:
1 问题 创建子类对象时如何初始化父类成员?父类构造函数和子类构造函数有什么关系? 2 子类对象的构造 子类中可以定义构造函数 子类构造函数 必须对继承而来的成员进行初始化 直接通过初始化列表或者赋值的方式进行初始:这种方式对于子类不能访问的父类成员不起作用,必须使用其他方法(调用父类构造函数) 调 阅读全文
摘要:
1 问题 子类是否可以直接访问父类的私有成员? 根据面对对象理论:子类拥有父类的一切属性和行为 ⇒ 子类能够直接访问父类的私有成员 根据 C++ 语法:外界(子类也是父类的外界)不能直接访问类的 private 成员 ⇒ 子类不能直接访问父类的私有成员 示例:继承中的访问级别 Dmeo #inclu 阅读全文
摘要:
1 再论类型转换 标准数据类型之间会进行隐式的类型安全转换 转换规则 char -> ↓ int -> unsigned int -> long -> unsigned long -> float -> double short -> 示例1:基本数据类型之间的隐式类型转换 Demo #includ 阅读全文
摘要:
1 问题 下面的代码有没有区别?为什么? 在工程上没有区别,编译器进行了优化 i++; // i的值作为返回值,i自增1 ++i; // i自增1,i的值作为返回 示例1:i++ 和 ++i 的区别 Demo #include <iostream> #include <string> using n 阅读全文