首页 > 试题广场 >

以下C++代码,那些语句会导致编译错误? #include

[不定项选择题]
以下C++代码,那些语句会导致编译错误?
#include <iostream>
class Foo {
public:
    explicit Foo(int a)
    {
        std::cout << "explicit Foo(int a)" << std::endl;
    }
    void func()
    {
        std::cout << "void func()" << std::endl;
    }
private:
    Foo(const Foo& foo)
    {
        std::cout << "Foo(const Foo& foo)" << std::endl;
    }
};
int main()
{
    Foo a;//1
    Foo b();//2
    Foo c(1);//3
    Foo d = c;//4
    return 0;
}

  • 1
  • 2
  • 3
  • 4
语句2是警告,是将Foo b(); 看成了函数的声明,不是编译错误。
发表于 2022-03-22 14:31:54 回复(1)
这里没有无参构造,调用失败,无参构造的调用不加(),否则编译器认为是一个函数的声明
发表于 2022-07-26 15:15:48 回复(0)
“Foo b(void)”: 未调用原型函数(是否是有意用变量定义的?)
发表于 2022-03-22 10:19:09 回复(0)
b也错了吧

发表于 2022-01-01 12:17:47 回复(1)
Foo b(); //empty parentheses interpreted as a function declaration [-Wvexing-parse]
发表于 2021-10-04 00:30:58 回复(0)
4.  "Foo::Foo(const Foo &foo)" (已声明 所在行数:13) 不可访问 

explicit构造函数是用来防止隐式转换的。
1. 类 "Foo" 不存在默认构造函数   



编辑于 2021-09-21 05:28:08 回复(0)