• 抽象方法


      抽象方法(abstract method,也可以称为纯虚函数)是面向对象编程技术的另一个核心概念,在设计一个多层次的类继承关系时常会用到。

      把某个方法声明为一个抽象方法等于告诉编译器这个方法必不可少,但我现在(在这个基类里)还不能为它提供一个实现!

      其实在之前我们已经见过一个应该被声明为抽象方法的好例子了,没错,就是 Pet::play() 方法。 为什么?

      上一个例子中,现实中既不存在什么都玩的宠物,也不存在什么都能玩的游戏。

      每种宠物都有它自己的玩法,而我们的应对措施是输出一条消息说宠物正在玩。

      现在既然知道了抽象方法这个概念,我们就再也用不着编写那些不必要的代码了。

      抽象方法的语法很简单:在声明一个虚方法的基础上,在原型的末尾加上”=0”。(告诉编译器不用浪费时间在这个类里寻找这个方法的实现!),距离如下:

    #include <iostream>
    #include <string>
    
    class Pet
    {
    public:
    	Pet(std::string theName);
    
    	virtual void eat();
    	virtual void sleep();
    	virtual void play() = 0;//抽象方法,基类则用不着编写抽象方法的实现代码 
    
    protected:
    	std::string name;
    };
    
    class Cat : public Pet
    {
    public:
    	Cat(std::string theName);
    
    	void climb();
    	void play();
    };
    
    class Dog : public Pet
    {
    public:
    	Dog(std::string theName);
    
    	void bark();
    	void play();
    };
    
    Pet::Pet(std::string theName)
    {
    	name = theName;
    }
    
    void Pet::eat()
    {
    	std::cout << name << "正在吃东西!
    ";
    }
    
    void Pet::sleep()
    {
    	std::cout << name << "正在睡大觉!
    ";
    }
    
    Cat::Cat(std::string theName) : Pet(theName)
    {
    }
    
    void Cat::climb()
    {
    	std::cout << name << "正在爬树!
    ";
    }
    
    void Cat::play()
    {
    	std::cout << name << "玩毛线球!
    ";
    }
    
    Dog::Dog(std::string theName) : Pet(theName)
    {
    }
    
    void Dog::bark()
    {
    	std::cout << name << "旺~旺~
    ";
    }
    
    void Dog::play()
    {
    	std::cout << name << "正在追赶那只该死的猫!
    ";
    }
    
    int main()
    {
    	Pet *cat = new Cat("加菲");
    	Pet *dog = new Dog("欧迪");
    
    	cat -> sleep();
    	cat -> eat();
    	cat -> play();
    
    	dog -> sleep();
    	dog -> eat();
    	dog -> play();
    
    	delete cat;
    	delete dog;
    
    	return 0;
    }
    

      

  • 相关阅读:
    终于,我还是对自己的博客下手了
    对字典进行排序
    小米官网的css3导航菜单
    背景色渐变
    处理手机上点击链接出现的蓝色边框
    如何修改HTML5 input placeholder 颜色
    自定义浏览器滚动条样式
    两行文字,固定宽高,超出部分以三点隐藏
    css3控制div上下跳动-效果图
    css3控制div上下跳动
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/10412378.html
Copyright © 2020-2023  润新知