c++ 虚函数的语法知识

天王盖地虎626 发布于 09/01 17:37
阅读 97
收藏 0

下面的两个虚函数,一个有const 一个没有,请问,有啥区别吗?

 virtual void set() =0;
  virtual void show() const =0;

加载中
0
tcxu
tcxu
  1. 在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。楼主的两行代码声明的函数,均为 纯虚函数。
  2. const用在成员函数后的目的,主要是针对类的 const 对象。就是说:const对象只能调用const成员函数;const对象的值不能被修改,即在const成员函数中修改const对象数据成员的值是语法错误;在const函数中调用非const成员函数也是语法错误。

以下代码案例,演示如何正确使用类似楼主所列的两个纯虚函数(带 const 和 不带 const)。 

#include <iostream>
using namespace std;
   
  class   R_Base{   
  public:   
	virtual  void   show() = 0;   
  	virtual  void   show() const = 0;   
  
  };   
  
  class R: public R_Base {
  public:
  	  R(int   r1,   int   r2)   {   R1=r1;   R2=r2;   }   
  void  show()   {   
  cout<<R1<<", "<<R2<<" 调用为非常量对象所用的 show()。"<<endl;   
  }   
    
  void  show()const{   
  cout<<R1<<", "<<R2<<" 调用为常量对象所用的 show()。"<<endl; 
  } 
  
  private :   
  int   R1,   R2;   
  };    
    
  int   main(){   
  R   a(5,   4);   
  a.show();   // 调用不带 const 的函数 
  const   R   b(20,   52);   
  b.show();   // 常量对象只能调用带 const 的函数 
  
  return 0;
  }

输出:

5, 4 调用为非常量对象所用的 show()。
20, 52 调用为常量对象所用的 show()。


参考:
纯虚函数
const(一):(转) 一个函数名后面加const表示什么意思
 

0
CHONGCHEN
CHONGCHEN
函数后置const是在运行过程中不能改变内部数据
返回顶部
顶部