cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech
cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech
//纯虚函数是用来继承用的
//纯虚函数
//抽象类-抽象数据类型
//*任何包含一个或者多个纯虚函数的类都是抽象类
//*不要/不能创建这个类的对象,应该/只能继承它
//*务必覆盖从这个类继承的纯虚函数
//实现纯虚函数-----------可写可以不写
//C++接口
//就是只包含纯虚函数的抽象基类
//一个指向基类的指针可以指向它的派生类,指向它的子子孙孙
//通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。
//抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
#include <iostream>//txwtech,cc32b_demo-纯虚函数与抽象类demo2
using namespace std;
//一个指向基类的指针可以指向它的派生类,指向它的子子孙孙
//通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。 //抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。 enum COLOR {Red,Green,Blue,Yellow,White,Black,Brown}; class Animal
{
public:
Animal(int);
virtual ~Animal() { cout << "Animal析构函数被调用...\n"; }
virtual int GetAge() const { return itsAge; }
virtual void SetAge(int age) { itsAge = age; }
virtual void Sleep() const = ;//纯虚函数
virtual void Eat() const = ;
virtual void Reproduce() const = ;
virtual void Move() const = ;
virtual void Speak() const = ; private:
int itsAge;
};
Animal::Animal(int age) :itsAge(age)
{
cout << "Animal构造函数被调用。。。、\n";
}
class Mammal :public Animal
{
public:
Mammal(int age) :Animal(age)
{
cout << "Mammal构造函数被调用。。。\n";
}
virtual ~Mammal() { cout << "Mammal析构函数被调用..."; }
virtual void Reproduce() const
{
cout << "Mammal Reproduction depiacted...\n";
}
};
class Fish :public Animal
{
public:
Fish(int age) :Animal(age)
{
cout << "fish的构造函数被调用。。。\n";
}
virtual ~Fish()
{
cout << "fish的析构函数被调用。。。\n";
}
virtual void Sleep() const { cout << "fish snoring...\n"; }
virtual void Eat() const { cout << "fish feeding...\n"; }
virtual void Reproduce() const { cout << "fish laying eggs...\n"; }
virtual void Move() const { cout << "fish swimming...\n"; }
virtual void Speak() const {} };
class Horse :public Mammal
{
public:
Horse(int age, COLOR color) :Mammal(age), itsColor(color)
{
cout << "horse构造函数被调用。。。\n";
}
virtual ~Horse()
{
cout << "horse析构函数被调用。。。\n";
}
virtual void Speak() const {cout<<"Whinny!...\n";}
virtual void Sleep() const {cout<<"Horse snoring ...\n";}
virtual COLOR GetItsColor() const { return itsColor; }
virtual void Eat() const { cout << "Horse feeding...\n"; }
virtual void Move() const { cout << "horse running...\n"; }
protected: //虽然是私有,但可以被继承
COLOR itsColor; };
class Dog :public Mammal
{
public:
Dog(int age, COLOR color) :Mammal(age), itsColor(color)
{
cout << "dog构造函数被调用\n";
}
virtual ~Dog()
{
cout << "dog析构函数被调用\n";
}
virtual void Speak() const { cout << "dog Whoof...\n"; }
virtual void Sleep() const { cout << "dog Snoring...\n"; }
virtual void Eat() const { cout << "dog Eatting...\n"; }
virtual void Move() const { cout << "dog running...\n"; }
virtual void Reproduce() const
{
cout << "Dogs reproducing...\n";
}
protected:
COLOR itsColor; }; int main()
{
Animal *pAnimal = ;
int choice;
bool fQuit = false;
while (fQuit == false)
{
cout << "1.Dog 2.Horse 3.Fish 0.Quit:";
cin >> choice;
switch (choice)
{
case :
pAnimal = new Dog(,Brown);
break;
case :
pAnimal = new Horse(, Black);
break;
case :
pAnimal = new Fish();
default:
fQuit = true;
break;
}
if (fQuit == false)
{
pAnimal->Speak();
pAnimal->Eat();
pAnimal->Reproduce();
pAnimal->Move();
pAnimal->Sleep();
delete pAnimal;
cout << endl;
}
}
//getchar();
return ;
}
cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech的更多相关文章
- cc32a_demo-32dk2j_cpp_纯虚函数与抽象类-txwtech
//32dk2j_cpp_纯虚函数与抽象类cc32a_demo-txwtech//纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要/ ...
- C++学习基础十二——纯虚函数与抽象类
一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个 ...
- C++基础(纯虚函数与抽象类)
C++基础之纯虚函数与抽象类 引言 纯虚函数在C++编程中的地位很重要,其关联到了设计模式中"接口"的概念. 语法 纯虚函数的语法: 1. 将成员函数声明为virtual 2. ...
- C++:纯虚函数与抽象类
5.4.3 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,它在该基类中没有定义,但是要求在派生类中根据需要对它进行定义,或仍然说明为纯虚函数. 声明纯虚函数的一般格式是: virtual 函数 ...
- c++,纯虚函数与抽象类
1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数.声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体:(3)最后面的“=0”并不表示函数返回值 ...
- C++复习:纯虚函数和抽象类
纯虚函数和抽象类 1基本概念 2抽象类案例 3抽象类在多继承中的应用 C++中没有Java中的接口概念,抽象类可以模拟Java中的接口类.(接口和协议) 3.1有关多继承的说明 工程上的多继承 被 ...
- 简单地说, cpp中的纯虚函数就是抽象类的具体实现
简单地说, cpp中的纯虚函数就是抽象类的具体实现.包含了纯虚函数的类就是抽象类.
- C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则
1 昨日回顾 2 多态的原理 1 要有继承 2 要有子类重写父类的虚函数 3 父类指针(或者引用)指向子类对象 (动态联编 虚函数表 3 证明vptr指针的存在 4 vptr指针在构造父类的时候是分步 ...
- c++-纯虚函数和抽象类
纯虚函数和抽象类 C面向接口编程和C多态 函数类型语法基础 函数指针做函数参数(回调函数)思想剖析 函数指针做函数参数两种用法(正向调用.反向调用) 纯虚函数 抽象类 抽象类基本概念 抽象类在多继承中 ...
- C++开发系列-纯虚函数和抽象类
概念 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都实现该函数. 纯虚函数为各派生类提供了一个公共界面(接口的封装和设计.软件的模块功能的划分) 纯虚函数说明 ...
随机推荐
- vue触发事件的五个关键字
v-on vue中提供了v-on事件绑定 v-on:click='函数'; v-on可以使用@代替 vue 五个触发事件关键字 .stop 用于阻止冒泡 例如 div1 ...
- PHP文件上传案例和函数
$_FILES参数详解: $_FILES["file"]["name"] – 被上传文件的名称 $_FILES["file"][" ...
- linux克隆之后网络设置
1.修改网络 vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改:ip地址 IPADDR=192.168.77.83GATEWAY=192.168.77.2 ...
- ubuntu 安装 swftoos
一:下载依赖: freetype下载地址 : http://ftp.twaren.net/Unix/NonGNU/freetype/ jpegsrc:下载地址 http://www.ijg.org/f ...
- SpringBoot自定义装配的多种实现方法
Spring手动装配实现 对于需要加载的类文件,使用@Configuration/@Component/@Service/@Repository修饰 @Configuration public cla ...
- Shell概述1
Shell概述1 脚本文件内容(vim ex2) #!/bin/bash #If no arguments,then listing the current directory. #Otherwise ...
- 设计Dog类 代码参考
#include <iostream> #include <string> using namespace std; class Dog { private: string n ...
- ES6-for...of与for...in
1.includes 数组是否包含某个东西 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- jchdl - GSL实例 - Concat
https://mp.weixin.qq.com/s/oJY6Xj9_oM1gSmvH_dHkJg Concat节点把多根输入线线组合成一排线输出. 参考链接 https://github.c ...
- PELT(Per-Entity Load Tracking)
引言 对于Linux内核而言,做一款好的进程调度器是一项非常具有挑战性的任务,主要原因是在进行CPU资源分配的时候必须满足如下的需求: 1.它必须是公平的 2.快速响应 3.系统的throughput ...