我可能需要更多地重新考虑我的整体设计,但就目前而言,看起来我可能想做类似的事情:
class A;
class B;
std::map<boost::shared_ptr<const A>, B> APtrToBMap;
Run Code Online (Sandbox Code Playgroud)
我试过这个,它似乎在一个简单的情况下工作(编译器没有抱怨,简单的测试似乎工作).但我对这种方法有了第二个想法.我怀疑那里有一些我不知道的陷阱.
那么,上述实际意义上的有效吗?或者,当我这样做时,我不知道有什么缺陷吗?
显式为C++对象构造函数提供FULL初始化列表是否有任何优点或缺点?(尽管我们只是使用默认构造函数,但是你已经列出了所有成员的全部内容?)
例如,如果我有对象:
class MyObject
{
public:
MyObject();
private:
double _doub;
Foo _foo;
std::set<int> _intSet;
int _int;
Bar _bar;
}
Run Code Online (Sandbox Code Playgroud)
与我的构造函数是否有任何区别:
MyObject::MyObject():
_doub(1.4), _foo("me"), _intSet(),
_int(5), _bar() {};
Run Code Online (Sandbox Code Playgroud)
与仅列出我特别需要设置数据的对象(或调用非默认构造函数):
MyObject::MyObject():
_doub(1.4), _foo("me"), _int(5) {};
Run Code Online (Sandbox Code Playgroud)
如果Class只有它使用默认构造函数的对象,我是否应该设置初始化列表?
例如:
class MyObject
{
public:
MyObject();
private:
Foo _foo;
std::set<int> _intSet;
Bar _bar;
}
Run Code Online (Sandbox Code Playgroud)
是否有一个像这样的构造函数?
MyObject::MyObject():
_foo(), _intSet(), _bar() {};
Run Code Online (Sandbox Code Playgroud)
谢谢.