您当前的位置: 首页 >  c++

柳鲲鹏

暂无认证

  • 0浏览

    0关注

    4642博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++类中在构造器中调用本类的另外构造器

柳鲲鹏 发布时间:2019-03-12 17:25:08 ,浏览量:0

  一个类中,构造器有多个,参数有所差异,而执行内容由相似.这个时候,当然是在一个构造器中调用另外一个构造器.在JAVA中通过this可以很容易的实现.在C++中,必须使用特殊方式.

  • 在构造器中调用通用的init()成员函数.这样的好处是外部也可以显式初始化.
  • 正确办法

编译时要加参数:g++ -std=c++11

template 
SafeArray::SafeArray(const int size) : SafeArray(size, __FILE__, __FUNCTION__, __LINE__)
{
    //
}

template 
SafeArray::SafeArray(const int size, const char* pFile, const char* pFunction, const int nLine)
{
    ....
}
  • 疑问方法

  以下编译成so时可以通过,单独编译时出错.

template 
SafeArray::SafeArray(const int size)
{
    new (this)SafeArray(m_nSize, __FILE__, __FUNCTION__, __LINE__);
}

template 
SafeArray::SafeArray(const int size, const char* pFile, const char* pFunction, const int nLine)
{
    ......
}

  转帖一点内容:

  这种技术名字叫placement new,与一般的operator new不一样。

  new (pointer)构造函数() 里面,看括号里面的是一个指针整句话的意思就是生成一个对象,然后将对象放在指针指向的地址那里。这种方法可以在任意地方构造对象。

关注
打赏
1665724893
查看更多评论
立即登录/注册

微信扫码登录

0.0584s