显然,两个都是错误的,但是D要比F错的更离谱
对于F,只要添加一个函数,一个 operator= 函数,就是对的
但是对于D,一个子类里面有一个完整的父类,但是一个父类里面可没有包含子类
把父类的指针转换成子类的指针,错的要比F少写了一个函数更离谱
这种题目没意思,错就错了,还要在错误中比较出一个 ‘最’ 来,没意思
- class Car {
- public:
- Car( ){ /*略*/ }
- void doFunc( ) { /*略*/ };
- //其它略
- };
- class MTCar:public Car {
- public:
- MTCar( ){ /*略*/ }
- void newFunc( ) { /*略*/ }
- //其它略
- const MTCar operator=(const Car &c) {
- return MTCar();
- }
- };
- class Foo {
- public:
- Foo(Car * pobj=nullptr):mp(pobj){ }
- void func(Car & obj){
- obj.doFunc( );
- }
- private:
- Car * mp;
- //其它略
- };
- int main() {
- MTCar mc;
- Car c;
- mc = c;
- return 0;
- }
复制代码
这里写的 “ //其它略”
也就是说他把 operator= 函数略了 ?