欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > c++构造函数在什么时间会被调用执行

c++构造函数在什么时间会被调用执行

2024/10/25 21:22:25 来源:https://blog.csdn.net/qq_41570500/article/details/139857476  浏览:    关键词:c++构造函数在什么时间会被调用执行

先看一段代码,它是一个构造函数:

CANThread::CANThread()
{stopped = false;m_dev = INVALID_DEVICE_HANDLE;m_channel1 = INVALID_CHANNEL_HANDLE;m_channel2 = INVALID_CHANNEL_HANDLE;devPtr = nullptr;memset(&m_config,0,sizeof(m_config));
}

CANThread::CANThread() 这段代码表示的是 CANThread 类的构造函数。在C++中,构造函数是一种特殊的成员函数,用于在创建类的对象时初始化对象。

构造函数何时执行:

  1. 创建对象时:当你使用类来创建一个新对象时,构造函数会自动执行。例如:

    CANThread myCanThread; // 这里会自动调用 CANThread::CANThread() 构造函数
    
  2. 在堆上分配内存时:如果你使用 new 操作符在堆上分配一个对象,构造函数会被调用:

    CANThread* myCanThread = new CANThread(); // 使用 new 分配对象并调用构造函数
    
  3. 返回对象时:如果一个函数返回类的对象,构造函数会在返回时被调用,以初始化返回的对象:

    CANThread createCANThread() {return CANThread(); // 构造函数在返回时调用
    }
    
  4. 参数传递时:如果一个函数通过值接收一个对象,构造函数会在参数传递时被调用:

    void process(CANThread thread) { /* ... */ }
    process(CANThread()); // 构造函数在传递给 process 时调用
    

构造函数的作用:

CANThread::CANThread() 中,你初始化了 CANThread 对象的几个成员变量:

  • stopped 被初始化为 false,可能用于控制线程是否应该停止。
  • m_devm_channel1m_channel2 被初始化为 INVALID_DEVICE_HANDLEINVALID_CHANNEL_HANDLE,这些可能是预定义的无效句柄值,用于表示设备或通道句柄未初始化。
  • devPtr 被初始化为 nullptr,表示它不指向任何内存。
  • m_config 通过 memset 函数被初始化为0,这通常用于清零结构体或类的对象。

构造函数是类的实例化过程中非常重要的一部分,它确保了每当创建类的新实例时,所有的成员变量都被正确地初始化。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com