我是c++的初学者,所以有很多事情我脑子里不太清楚。
我有这段代码需要编写,并在一个类中创建了一个构造函数。 但是,我不需要任何参数,因为我从构造函数内部 中读取文件流。所以我的问题是:
1.我可以做这样的构造函数吗:
class myClass {
private:
string title;
string organizer;
public:
myClass() {
title = stringRead();
organizer = stringRead();
}
}
其中 stringRead() 是我编写的用于从我的文件中读取的函数??
2.以后需要的时候怎么调用?我知道默认构造函数是这样调用的:
myClass A;
A = myClass();
是一样的吗?
3.如果我有一个指针,我如何再次调用构造函数?这似乎不应该是正确的......
myClass *B;
B = myClass();
提前致谢! =D
最佳答案
1) 这个构造函数可以工作,但你应该喜欢使用初始化列表(假设 stringRead()
不是 myClass
class myClass {
private:
string title;
string organizer;
public:
myClass()
: title(stringRead()),
organizer(stringRead())
{ }
};
2) myClass A;
是你应该做的。您也可以使用 auto A = myClass();
,在优化之后,这将是同一件事。如果不进行优化,将构造一个临时对象,然后 A
将从中构造,因此这不适用于不可移动的对象(您的对象是可移动的)
3) 如果你想使用裸指针那么你会使用
myClass *ptr = new myClass;
// bunch of code
delete ptr;
但是,您最好使用智能指针来控制其生命周期。这样你就不需要手动删除
std::unique_ptr<myClass> ptr(new myClass);
或 c++14 中的 make_unique
auto ptr = std::make_unique<myClass>();
如果您拥有共享所有权,当然可以使用 shared_ptr
关于c++ - C++ 中的类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30685253/