C++ 声明具有所有虚拟函数的类的对象

C++ 声明具有所有虚拟函数的类的对象,c++,oop,virtual-functions,C++,Oop,Virtual Functions,实际上,这是我的期末考试题。 以下哪项会产生编译时错误 在main函数的定义中声明具体类的对象 在构造函数语句中写入输出语句 声明至少有一个虚函数的类的对象 声明具有所有虚拟函数的类的对象 我选择了第四个。但还是很困惑。需要帮助 四个选项都没有 在main函数的定义中声明具体类的对象 在构造函数语句中编写输出语句 声明至少有一个虚函数的类的对象 声明具有所有虚拟函数的类的对象 这必然会导致编译错误 如果您包含语法错误,例如,其中任何一个都会给出编译错误 然而,不清楚作者所说的“构造器语句”是什么

实际上,这是我的期末考试题。 以下哪项会产生编译时错误

  • 在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
        }
    }