我有一个问题调用其他C++中的默认构造函数。在Java中是这样的:C++构造函数调用默认构造函数
class Book {
static private int i;
private String s;
public Book() {
i++;
}
public Book(String s) {
this();
this.s = s;
}
}
我有一个问题调用其他C++中的默认构造函数。在Java中是这样的:C++构造函数调用默认构造函数
class Book {
static private int i;
private String s;
public Book() {
i++;
}
public Book(String s) {
this();
this.s = s;
}
}
如果你有能力委托构造函数的编译器,只需调用在初始化列表中的默认构造函数:
class Book
{
public:
Book()
{ ... }
Book(const std::string& s)
: Book()
{ ... }
};
否则你可以做一个普通的初始化函数,并从所有构造函数中调用它:
class Book
{
public:
Book()
{ construct(); }
Book(const std::string& s)
{
construct();
// Other stuff
}
private:
void construct()
{ ... }
};
奇怪的C#它工作正常,但在C + +不......我会创建一个函数,将持有我需要的代码。 – user2553917
在C++中,我们有委托构造。有两件事情去了解它:
它们仅因为C++ 11,而不是所有的编译器已经实现了他们。
正确的语法是使用构造函数的初始化列表:
Book(std::string s) : Book() { ... }
在C++ 11中,您可以使用委托构造函数 –
该代码无效C++(我认为您已经知道了)。问题是什么? –
这是一个java代码,我需要知道如何将这个代码在c + + – user2553917