相关疑难解决方法(0)

在C++中覆盖虚函数时可以更改返回类型吗?

我遇到了关于覆盖虚函数的问题,实际上,它是关于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)

c++ virtual overriding function

7
推荐指数
2
解决办法
7385
查看次数

标签 统计

c++ ×1

function ×1

overriding ×1

virtual ×1