派生类
C++内所说的异常是指:可以预见的非正常状况例如输入的指针为空;而非不可预见的问题例如突然停电或者突然被用户把进程kill掉并不是C++需要处理的"异常" 异常特性会导致程序的执行流程不可控且往往对OS及runtime有一定的要求(可移植性差)所以没有特殊需求时不应当使用这个特性. throw-try-catch是异常系统的典型三个环节. 异常抛出后寻找catch的过程称为栈展开被展开的函数栈内所有局部对象都将被销毁因此抛出的异常对象必须不依赖局部对象. 标准库内提供了以exception为基类的若干异常我们可以使用这个类也可以自定义类该类的const char * what()成员用于给用户提供信息. catch时优先使用引用 从而保证能派生类实例能绑定到基类参数上. 属于C++系列分类,被贴了 c++、excpetion 标签。作者是edimetia3d。
工厂方法模式 是一种面向对象的设计模式。通过调用不同的方法返回需要的类,而不是去实例化具体的类。 对实例创建进行了包装
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。 接口定义了属性、方法和事件,这些都是接口的成员
子类型必须能够替换掉它们的基类型。 就是说一个参数是基类类型参数的函数,再函数掉用的时候,传入一个派生类的参数,这时候函数的功能是正常的。这样才被能满足LSP原则
派生类的方法(以及属性、索引器、事件)以new开始声明,表明这是与基类无关(隐藏基类同名方法);如果以override开始声明表示将覆盖基类的同名的方法,且基类的对应方法必须声明为 virtual。可以用base关键字访问基类的方法。 本站的全部文字在创用CC 姓名标示-相同方式分享 3.0 协议之条款下提供,附加条款亦可能应用(请参阅使用条款)
当派生类与基类中有相同成员时:若未强行指名,则通过派生类对象使用的是派生类中的同名成员。如要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名限定。 二义性问题:在多重继承时,基类与派生类之间,或基类之间出现同名成员时,将出现访问时的二义性(不确定性)——采用虚函数或同名覆盖原则来解决
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例
将小范围的类型转换为大范围的类型,如将int类型转换为float类型,派生类转换为基类。 即强制类型转换,这种转换需要强制转换运算符,并且转换可能会造成数据丢失。如大范围类型转换为小范围类型,基类转换为派生类
析构函数是为了在对象不被使用之后释放它的资源,虚函数是为了实现多态。那么把析构函数声明为vitual有什么作用呢? 直接的讲,C++ 中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放
三、虚函数(virtual) A.非虚函数,调用的函数是由用于调用函数的句柄(指针或引用)类型决定,而不是由句柄所指向的对象的类型决定。 B.虚函数,调用哪个类的虚函数就是由句柄所指向的对象的类型所决定,而非句柄的类型。 四、虚函数实现机制 A.数据结构,virtual函数表,含有虚函数的类,编译器编译时都会为这个类创建一个virtual函数表,每次调用该类的virtual函数时,运行程序都会根据virtual函数表选择正确的函数实现