sphinx 源码学习(1) 子类调用父类的拷贝构造函数(private父类拷贝等构造函数)

本文探讨了Sphinx源码中子类如何调用父类的拷贝构造函数,特别是当父类拷贝构造函数为private或被删除时的情况。通过分析例子,解释了子类默认拷贝构造函数和自定义拷贝构造函数的行为,以及在这些情况下如何影响父类构造函数的调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sphinx 源码学习

1、当Child没有定义拷贝构造函数,当调用Child默认拷贝构造函数时,会先调用Base拷贝构造函数
2、当Child定义有拷贝构造函数,当调用Child拷贝构造函数时,会先调用Base构造函数 (可显示调用Base拷贝构造函数)

下面代码: Base类的拷贝构造函数设置为private或delete,调用Child类会调用Base类的拷贝构造函数?

1、子类默认拷贝构造函数

class CSphMutex
{
   
public:
    CSphMutex(): m_bInitialized(false)
    {
   
        printf("[ %s ] [ %d ] [ %s ] \n", __FILE__,__LINE__,__func__);
        }
    ~CSphMutex()
    {
   
        assert(!m_bInitialized);
        printf("[ %s ] [ %d ] [ %s ] \n", __FILE__,__LINE__,__func__);
         }

    bool Init();
    bool Done();
    bool Lock();
    bool Unlock();

    inline pthread_mutex_t* GetInternalMutex()
    {
   
           return &m_mutex;
    }
protected:
    bool m_bInitialized;
    pthread_mutex_t m_mutex;
};

bool CSphMutex::Init()
{
   
     assert( !m_bInitialized );
     m_bInitialized = ( pthread_mutex_init ( &m_mutex, NULL)==0 );
     return m_bInitialized;
}

bool CSphMutex::Done()
{
   
    if( !m_bInitialized )
        return true;
    m_bIniti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值