try { throw 异常值;//抛出异常 } catch(异常类型1) { 处理异常代码1; } catch(异常类型2) { 处理异常代码2; } catch(...)//... 上面列举的异常类型以外的所有异常类型 { 处理异常代码3; }
当编译器发现我们的类中有虚函数的时候,编译器会创建一张虚函数表,把虚函数的函数入口地址放到虚函数表中,并且在类中秘密增加一个指针,这个指针就是vpointer(缩写vptr),这个指针是指向对象的虚函数表。
注意:虚继承只能解决具备公共祖先的多继承所带来的二义性问题,不能解决没有公共祖先的多继承的,工程开发中真正意义上的多继承是几乎不被使用,因为多重继承带来的代码复杂性远多于其带来的便利,多重继承对代码维护性上的影响是灾难性的,在设计方法上,任何多继承都可以用单继承代替。
纯虚析构函数在C++中是合法的,但是在使用的时候有一个额外的限制:必须为纯虚析构函数提供一个函数体。
1、重载,同一作用域的同名函数。a、同一个作用域b、参数个数,参数顺序,参数类型不同c、和函数返回值,没有关系d、const也可以作为重载条件 //do(const Teacher& t){} do(Teacher& t)