我关心的是默认构造函数及其初始化列表。在一个简单的案例中,它很清楚,例如:
class A
{
protected:
double d1;
//classB obj1; //how to initialize this one in a default constructor?
public:
A (double x = 0.0): d1(x){} //constructor
virtual ~A(void) {};
//something
}
但是如何初始化拥有大量成员的classB的对象呢?或者通常如何在默认构造函数中初始化一些具有大量或未知数量要初始化的参数的类型?
最佳答案
您可以通过调用其默认构造函数或其他构造函数来初始化 成员初始化列表
中的 obj1
class A
{
protected:
double d1;
classB obj1;
pthread_mutex_t m_mutex;
public:
A (double x = 0.0): d1(x), obj1(), m_mutex(PTHREAD_MUTEX_INITIALIZER) {}
virtual ~A(void) {}
//something
}
如果 classB 有很多像您描述的成员,您可能会违反类设计规则 - 一个类做一件事
。您可能希望将 classB 分成小的独立类。
关于类默认构造函数中的c++类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762707/