Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的构造函数为构造指定了至少一个值,但它可以是默认构造的_C++_Class_Constructor_Default Value_Default Constructor - Fatal编程技术网

C++ 我的构造函数为构造指定了至少一个值,但它可以是默认构造的

C++ 我的构造函数为构造指定了至少一个值,但它可以是默认构造的,c++,class,constructor,default-value,default-constructor,C++,Class,Constructor,Default Value,Default Constructor,参加以下课程: class Foo{ public: Foo(std::string bar_, int baz_ = 7) :bar(bar_) ,baz(baz_) {} private: std::string bar; int baz; }; 因为Foostd::stringbar,intbaz=7;是我唯一的构造函数,编译器不应该为我实现默认构造函数,对吗?我认为构建这个类的唯一两种方法是: Foo foo("foo"); //o

参加以下课程:

class Foo{
public:
    Foo(std::string bar_, int baz_ = 7)
    :bar(bar_)
    ,baz(baz_)
    {}

private:
    std::string bar;
    int baz;
};
因为Foostd::stringbar,intbaz=7;是我唯一的构造函数,编译器不应该为我实现默认构造函数,对吗?我认为构建这个类的唯一两种方法是:

Foo foo("foo");  
//or  
Foo foo("foo",0);  
//plus copy constructor and overloaded assignment operator.
然而,为什么这是可能的呢

int main(){

    Foo foo();
}
当唯一的公共构造函数的第一个参数需要一个值时,我不明白如何默认构造一个类。将默认构造函数设为私有或尝试将其删除都没有区别。这是怎么发生的?
因为Foo-Foo;是一个函数的前向声明,它返回一个Foo并且不接受任何参数。使用Foo-Foo;相反,你会得到你的错误。

因为Foo-Foo;是一个函数的前向声明,它返回一个Foo并且不接受任何参数。使用Foo-Foo;相反,你会得到你的错误。

main中的symbol foo是一个函数,而不是foo类型的实例。试着在没有括号的情况下实例化你的对象。我怎么用英语写呢,然后读:为什么这个确切的语法问题在过去10小时内出现了三次?别担心。我们大多数人都经历过这种令人讨厌的启蒙运动。@Koushik Ohhhhhhh。。。狗娘养的!main中的symbol foo是一个函数,而不是foo类型的实例。试着在没有括号的情况下实例化你的对象。我该如何用英语写它,然后读:为什么这个确切的语法问题在过去10小时内出现了三次?别担心。我们大多数人都经历过这种令人讨厌的启蒙运动。@Koushik Ohhhhhhh。。。狗娘养的!