关于类对象做行参

来源:百度知道 编辑:UC知道 时间:2024/06/01 06:33:51
现在有一个函数
我想对其进行重载,即 ifstream类型的对象和stringstream类型的对象都可以做行参
如下
func(ifstream & stream)
{}

func(stringstream $stream)
{}
现在知道ifstream 和stringstream都是istream的子类

如何才能实现上述功能啊
我听说定义成 func(istream &stream)
{}
可行,但是编译不过

如果用模板,则因为不支持定义与声明的分别处于.h .ccp 文件,不太好
有没有其他的方法? 谢谢

可以那样做啊。。你看看我的例子。。
#include<iostream>
using namespace std;
class Base
{
public:
Base()
{
cout<<"Base执行构造函数"<<endl;
}
void display()
{
cout<<"Base display"<<endl;
}
};
class Drived1:public Base
{
public:
Drived1()
{
cout<<"Drived1执行构造函数"<<endl;
}

void display()
{
cout<<"Drived1 display"<<endl;
}
};
class Drived2:public Base
{
public:
Drived2()
{
cout<<"Drived2执行构造函数"<<endl;
}

void display()
{
cout<<"Drived2 display"<<endl;
}
};
class Hello
{
public:
Hello()
{
cout<<"hello 构造函数"<<endl;
}
void f(Base b)
{
b.display();
}
void f