我遇到了关于覆盖虚函数的问题,实际上,它是关于hessian(一种Web服务协议).
它有一个基类Object和一些派生类:Long,Int,String,...,所有派生类都有一个无虚函数"value"
class Object
{
...
};
class Long :public Object
{
...
public:
typedef long long basic_type;
basic_type value(){return value_;}
private:
basic_type value_;
...
};
class Int :public Object
{
...
public:
typedef int basic_type;
basic_type value(){return value_;}
private:
basic_type value_;
...
};
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个函数,比如toString,它可以将Object转换为字符串:
Object *obj = ...
cout<<obj->toString();
Run Code Online (Sandbox Code Playgroud)
如果我可以将值函数更改为virtual,我只需要在Object中编写一个toString函数,否则,我需要编写一个虚函数toString,并在所有派生类中重写这个函数.
例如
class Object
{
virtual Type value(); // It seemed that I can't write a function like this,because the Type is different for different derived classes
std::string toString()
{ …Run Code Online (Sandbox Code Playgroud)