关于ofstream的拷贝问题

yyg990441 2010-03-05 03:31:17
说明:以下代码纯属说明问题,无任何实际意义.
问题描述:该代码运行时刻出错.
分析:应该是ofstream值传递,引起拷贝构造函数的调用惹的祸.为了说明问题,请不要
采用改为引用或者指针等不会引发ofstream拷贝构造调用的做法.
疑问:如果是拷贝构造函数的浅拷贝问题,为什么不设计成深拷贝或者将拷贝构造定义
为非public呢?

#include <fstream>
using namespace std;

void fun( ofstream out ){
out << "a" << endl;
}

int main(){
ofstream o("data.txt");
fun(o);
}
...全文
166 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyg990441 2010-03-05
  • 打赏
  • 举报
回复
引用 4 楼 freezezdj 的回复:
VS2005编译错误:无法访问 private 成员

设计成深拷贝,问题会更多。
假如两个指针指向同一块new内存的指针,
该谁delete,而且要是被delete两次呢。

当然还有其他问题。


妈的,VC6居然不报错,垃圾~~~就想的~~~以后不用VC6了
冻结 2010-03-05
  • 打赏
  • 举报
回复
VS2005编译错误:无法访问 private 成员

设计成深拷贝,问题会更多。
假如两个指针指向同一块new内存的指针,
该谁delete,而且要是被delete两次呢。

当然还有其他问题。

tan870426 2010-03-05
  • 打赏
  • 举报
回复
有些东西不是我们认为怎样合适它就会怎样的!
Jinhao 2010-03-05
  • 打赏
  • 举报
回复
疑问:如果是拷贝构造函数的浅拷贝问题,为什么不设计成深拷贝或者将拷贝构造定义
为非public呢?
===============
怎么个深法? 如果同时多个ofstream引用同一个文件,那这不是自己给自己找麻烦问题吗?
taodm 2010-03-05
  • 打赏
  • 举报
回复
这就是一个规定,不值得多讨论。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧