zoukankan      html  css  js  c++  java
  • c++虚函数的学习

    1.虚函数

    #include<iostream.h>
    
    class Base
    {
    public:
    	void print()
    	{
    		cout<<"Base"<<endl;
    	}
    };
    
    class Son:public Base
    {
    public:
    	void print()
    	{
    		cout<<"Son"<<endl;
    	}
    };
    
    void fun(Base *obj)
    {
    	obj->print();
    }
    
    int main()
    {
    	Base base;
    	Son son;
    	fun(&base);
    	fun(&son);
    	return 0;
    }

    类Base和Son中都有print方法,Son继承Base类。在主函数中分别建立Base和Son的对象,在fun函数中调用对象的print()方法。运行结果如下


    从结果中可以看出不论传的是父对象的地址还是子对象的地址,最终调用的都是父对象的print()方法。如果希望传父对象时调用父对象print()方法,传子对象时调用子对象的print()方法。则只需要将父类的print方法声明成虚函数就行。virtual void print(){}。

    2.纯虚函数

    (1)纯虚函数的定义

    virtual 返回类型 函数名 (<参数>)=0;

    #include<iostream.h>
    
    class Shape
    {
    public:
    	virtual void show()=0;
    };
    
    class Circle:public Shape
    {
    public:
    	void show()
    	{
    		cout<<"Circle"<<endl;
    	}
    };
    
    class Rect:public Shape
    {
    public:
    	void show()
    	{
    		cout<<"Rect"<<endl;
    	}
    };
    
    void fun(Shape *shape)
    {
    	shape->show();
    }
    
    int main()
    {
    	//Shape  s;//纯虚函数的类不能创建对象
    	Circle circle;
    	Rect   rect;
    	fun(&circle);
    	fun(&rect);
    	return 0;
    }


    有纯虚函数的类不能创建对象。在基类中只作方法的声明,具体的实现要由其子类来实现。


  • 相关阅读:
    DWR组件——基于远程过程调用实现Ajax
    JSTL学习笔记
    EL表达式学习笔记
    JavaScript学习笔记
    原生Ajax使用教程
    Response的返回内容类型
    Tomcat上文件的绝对路径访问笔记
    JSON语言规范与Java中两种解析工具基本使用
    Java生成XML文件与XML文件的写入
    编码问题笔记
  • 原文地址:https://www.cnblogs.com/aukle/p/3231087.html
Copyright © 2011-2022 走看看