怎么实现在构造函数中插入代码

C++语言 码拜 8年前 (2016-04-01) 953次浏览
现在有个类AB,它有两个成员A类型的a和B类型的b
然后还有三个函数f1,f2,f3
本人现在想构造一个类AB,顺序是这样的
先执行f1,然后构造a,执行f2,然后构造b,最后执行f3
全部正常的话本人就得到一个AB的实例
但是f2和f3有可能抛出异常
假如本人要用一个工厂函数去实现的话
本人还要对应函数抛出异常的时候,对AB中已经构造好的成员a或a和b进行析构,否则有可能内存泄露
写这样的代码相当的麻烦
而c++的构造函数在抛出异常的时候就会自动对已构造的成员进行析构
所以本人想把f1,f2,f3嵌入到AB的构造函数中
不知道怎么实现
解决方案

20

把需要构造的对象用智能指针保存,假如构造的时候抛出了异常,指针为空,而且也不会有内存泄漏

10

应该保证f1,f2,f3不向上层传递异常。本人挖的坑本人解决。

40

构造函数中创建A、B类型临时对象,然后调用f1 f2 f3构造,成功的话赋值给类中的成员变量

10

除非你的子类A和子类B也是在AB构造函数生成的。这样AB析构的时候会自动析构其构造函数开辟的空间,也就是会析构AB构造的A和B。
所以,把A和B的生成写到AB的构造函数里就好了?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么实现在构造函数中插入代码
喜欢 (0)
[1034331897@qq.com]
分享 (0)