复制构造函数是否重新初始化文件成员

月球的黑暗面

我遇到了一个有趣的案例:

我有一个文件流作为类的成员,还有一个在文件中写入数据的函数。该对象作为参数传递给另一个类,该类使用该参数初始化其成员。因此,我遇到了一些问题,并且设法用字符串向量解决了这些问题,并向其中添加了行。但是现在我发现我仍然将对象从一个类传递到另一个类。

这是我所拥有的一个例子:

class A
{
private:
   std::ofstream oFile;
   std::vector<std::string> oFileStringVec;
public:
   A()
   {
      oFile.open("../Path/File.txt", std::fstream::out);
      if (!oFile.is_open()) { std::cout<<"Error!!\n";}
   }
   ~A() {}

   void writeInfo(const std::string& s) 
   { oFileStringVec.push_back(s); }

   void closeFile()
   { oFile.close(); }
};

class B
{
private:
   A ma;
public:
   B(const A& aOb) : ma(aOb) {}

   void foo() 
   {
      // ...
      ma.writeInfo(mystr);
   }
   // ...
};

class C
{
private:
   A ma;
public:
   C(const A& aOb) : ma(aOb) {}
   // ...
   void foo()
   {
      // ...
      B myB(myA);
      //...
   }
};

我有一个函数,可以在其中创建一个C对象并调用它的foo()方法:

void bar()
{
   // ...
   A myA;
   // ...
   C myC(myA);
   myC.foo();
   //...
}

我不太确定这是怎么回事。ofstream是否创建了多次?它只创建一次,然后重新打开?您可以qdvice我在每个析构oFile.close()函数中添加功能吗?我是否仅将向量作为参数传递,并仅在bar()函数中使用ofstream

一切都在流动

我不太确定这是怎么回事。ofstream是否创建了多次?

好感动 参考

4)移动构造函数。首先,move构造其他类的基类(不影响rdbuf()指针),然后move构造std :: basic_filebuf成员,然后调用this-> set_rdbuf()将新的basic_filebuf安装为rdbuf( )在基类中的指针。


它只创建一次,然后重新打开?

见第一点。

您能否建议我在每个析构函数中添加oFile.close()函数?

这已经在std::ofstream析构函数中自动完成了

我是否仅将向量作为参数传递,并仅在bar()函数中使用ofstream?

无法确定以上答案对您的用例有何影响。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

非原始成员初始化中的复制构造函数

使用复制构造函数时,是否在复制构造函数之前初始化了类数据成员?

是否可以在构造函数体内而不是初始化列表中初始化成员变量?

删除类的复制构造函数时,初始化类的数组成员

成员初始化列表与分配/复制构造函数的关系(以Boost截止时间为单位)

std::make_shared 值是否初始化其默认构造函数未初始化的类成员?

Clang-Tidy:移动构造函数通过调用复制构造函数来初始化类成员

构造函数是否应该初始化类的所有数据成员?

默认构造函数是否总是初始化所有成员?

在Java中是否可以基于构造函数调用初始化最终数据成员?

是否可以在构造函数中初始化枚举数据成员?

用一个元素初始化向量是否需要复制构造函数?

是否可以编写有助于复制初始化的显式构造函数?

在初始化中取消非平凡的复制/移动构造函数是否合法?

是否在调用构造函数之前初始化了静态成员?

c ++构造函数成员初始化:传递参数

cppcheck:构造函数中未初始化的成员变量

构造函数未初始化嵌套类的成员

调用非默认构造函数作为成员初始化

使用委托构造函数时的成员初始化

构造函数成员初始化列表说明

重载构造函数中的成员初始化

构造函数继承和直接成员初始化

使用委托构造函数进行成员初始化

在构造函数中初始化类成员变量

试图理解默认构造函数和成员初始化

初始化 const 成员并使用父构造函数

C++ 构造函数中的成员初始化语法

使用构造函数的参数初始化向量成员