类默认构造函数中的c++类

标签 c++ class initialization default-constructor

我关心的是默认构造函数及其初始化列表。在一个简单的案例中,它很清楚,例如:

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/

相关文章:

python - Python 类的 `__dict__`

class - Kotlin 中的这些类有什么区别?

javascript - 理解javascript对象(不同类型的声明)

c++ - 套接字关闭但 session 引用未被正确销毁

c++ - 在类中使用 union

c++ - Any Time 函数保证调用返回不同的值

VBA:用户窗体初始化时未命中用户窗体初始化方法

java - 未初始化的对象与初始化为 NULL 的对象

c++ - 将 int64_t 转换为 time_duration

c++ - 如何按索引存储 vector 的 vector