C++为何文件流创建对象后就不加open函数了呢?

如下:
void ifstream::open(const char*,int=ios::in,int=filebuf::openprot);
例子中有这样:
ifstream i(f1,ios::in|ios::nocreate);
就是这里不是新对象i吗?用他打开文件f1,为何不用加open函数呢??
#include "stdafx.h"
#include<fstream.h>
void main(void)
{
char ch,f1[256],f2[256];
cout<<"请输入源文件名?";
cin>>f1;
cout<<"请输入目标文件名?";
cin>>f2;
ifstream i(f1,ios::in|ios::nocreate);
ofstream o(f2);
if(!i){cout<<"\n不能打开源文件:"<<f1;return;}
if(!o){cout<<"\n不能打开目标文件:"<<f2;return;}
i.unsetf(ios::skipws);
while(i>>ch)
o<<ch;
i.close();
o.close();
cout<<"\n复制完毕!\n";
}
这是例子。

定义一个流对象有不同的方法的。
像你这样是声明流对象的同时,也绑定了流指向的文件。
ifstream i(f1,ios::in|ios::nocreate);

使用open的情况是把定义和绑定文件分开来执行。
ifstream i;
i.open(f1,ios::in|ios::nocreate);追问

那么第一种情况是如何确定绑定对应对象的函数是open函数呢?是通过后面的参数列表吗?

追答

肯定ifstream内部执行了open 吧

追问

构造不是那样写的吧,没有i吧?

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-03
ifstream i(f1,ios::in|ios::nocreate);
构造函数内部调用了open函数
相似回答
大家正在搜