C++ 声明具有所有虚拟函数的类的对象
实际上,这是我的期末考试题。 以下哪项会产生编译时错误C++ 声明具有所有虚拟函数的类的对象,c++,oop,virtual-functions,C++,Oop,Virtual Functions,实际上,这是我的期末考试题。 以下哪项会产生编译时错误 在main函数的定义中声明具体类的对象 在构造函数语句中写入输出语句 声明至少有一个虚函数的类的对象 声明具有所有虚拟函数的类的对象 我选择了第四个。但还是很困惑。需要帮助 四个选项都没有 在main函数的定义中声明具体类的对象 在构造函数语句中编写输出语句 声明至少有一个虚函数的类的对象 声明具有所有虚拟函数的类的对象 这必然会导致编译错误 如果您包含语法错误,例如,其中任何一个都会给出编译错误 然而,不清楚作者所说的“构造器语句”是什么
我选择了第四个。但还是很困惑。需要帮助 四个选项都没有
作者所说的“所有虚拟函数”可能是指“一个或多个纯虚拟函数”。如果是这样的话,那么这可能就是预期的答案。有些问题可能会有不同的解释,所以我将在这里总结这些问题。然而,请注意,这些解释中的一些实际上并不是同义词,而是我对你们老师可能想说什么的想法 1。在主函数的定义中声明具体类的对象。 请参见以下问题:。 这表明实例化或声明一个具体类是有效的。主功能对此没有特殊的例外 结论:
这是有效的。
2。在构造函数语句中编写输出语句。
通过constructor语句
,我假设类或结构的constructor函数
,或者类似的东西,是指。通常,我会说,输出语句
类似于写入控制台。然而,由于这些问题使用了某种奇怪的语言,我们可以说,output
语句意味着return
语句
例如,在编写控制台时,输出在构造函数中是完全合法的
class Foo
{
public:
Foo()
{
std::cout << "I made a Foo\n";
}
}
结论:这是否有效取决于您如何解释问题。
3。声明至少有一个虚函数的类的对象。
类中的虚拟函数解释如下:。
问题很清楚,一个或多个虚拟函数不是纯虚拟的,因此:
结论:这是有效的。
4。声明具有所有虚拟函数的类的对象。
有关虚拟
和纯虚拟
功能的说明,请参见我对答案3的说明。
对这个答案的直截了当的解释是:声明一个所有函数都是虚拟的类的对象合法吗?在这种情况下,该陈述是有效的,参见答案3
但是,您可以将所有虚拟函数
解释为纯虚拟函数
,在这种情况下,实例化类是无效的
结论:这是否有效取决于您如何解释问题。
最终结论
答案1和3都描述了有效的C++。然而,答案2和4可以用多种方式解释,因此答案并不清楚
个人想法我从未听说过有人调用
返回语句
输出语句。我也没有听说有人调用纯虚拟函数
一个全虚拟函数
。我觉得你的老师很奇怪。嗯……这些都不会导致编译器错误。期末考试题。。答案应该代表你对这门学科的知识。。。不是你让别人提供答案的能力。什么是构造函数语句?你确定他们写的是“具体”而不是“抽象”吗?如果你指的是“纯虚拟函数”而不是“所有虚拟函数”,那么4是正确的。
class Foo
{
public:
Foo()
{
return 3; // not legal
}
}