如果一个对象具有另一个对象的性质,那么它们之间就是继承关系。( )
C++类:构造函数(对象创建时调用)、析构函数(对象销毁时调用)、虚函数(实现多态)。构造函数不能为虚。
构造函数不能是虚函数(虚表在构造函数完成后才建立)。析构函数可以且通常应该为虚函数(防止内存泄漏)。
【考点】面向对象编程|继承 vs 组合|属性与关系
🎯 考纲定位:GESP 六级 C++ 组,面向对象编程(OOP)模块。命题人卡住的是"会写继承语法但分不清关系本质"的盲区——六级不再考语法记忆,而是考对OOP四大关系(继承/关联/组合/聚合)的区分能力。
🧠 解题思维:看到"具有性质→继承"这个箭头,先问自己:继承是语言语法定义的结构性关系(class B : public A),"具有性质"是功能层面的结果,二者不在同一维度。对象A有对象B的属性,可能源于组合(Car有Wheel)、关联(Student关联Teacher)、聚合(Order聚合Item),甚至共享接口实现——这些都不构成继承。正确判断链:功能结果≠特定结构。
🪤 陷阱拆解:命题人把"具有性质"偷换为"继承",利用初学者对OOP关系的模糊认知。绝对化表述"就是"是最大破绽——在面向对象世界里,多个关系可以产生相同功能效果,这是设计原则(优先组合而非继承)。只背结论"继承是has-a"而不理解"继承是is-a"的本质区别,就会掉进这个坑。
🔄 反命题思维:若改成"具有性质则必有组合关系",答案不变(仍错,可能是关联/聚合/继承)。若改成"具有性质则必有关联关系",答案仍错。命题人想考你:"具有性质"是功能结果,而继承是语法结构,二者不能直接划等号。刷到类似题先问:这描述的是is-a还是has-a?前者必有语法定义,后者可源于多种结构。