Linux系统中C++多态和数据封装的基本方法

简介: Linux系统中C++多态和数据封装的基本方法

第一:C++中的多态

      C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数;

形成多态必须具备三个条件:

1. 必须存在继承关系;

2. 继承关系必须有同名虚函数(其中虚函数是在基类中使用关键字 virtual 声明的函数,在派

生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数);

3. 存在基类类型的指针或者引用,通过该指针或引用调用虚函数。

   这里我们还需要理解两个概念:

#include <iostream>
#include <string>
   using namespace std;
/* 定义一个动物类 */
 class Animal
{
  public:
  virtual void run() {
  cout<<"Animal 的 run()方法"<<endl;
}
};
 /* 定义一个狗类,并继承动物类 */
 class Dog : public Animal
{
   public:
   void run() {
   cout<<"Dog 的 run()方法"<<endl;
}
};
/* 定义一个猫类,并继承动物类 */
class Cat : public Animal
 {
   public:
   void run() {
   cout<<"Cat 的 run()方法"<<endl;
   }
 };
 int main()
 {
 /* 声明一个 Animal 的指针对象,注:并没有实例化 */
 Animal *animal;
 /* 实例化 dog 对象 */
 Dog dog;
 /* 实例化 cat 对象 */
 Cat cat;
 /* 存储 dog 对象的地址 */
 animal = &dog;
 /* 调用 run()方法 */
 animal->run();
 /* 存储 cat 对象的地址 */
 animal = &cat;
 /* 调用 run()方法 */
 animal->run();
 return 0;
}

第二:C++中数据封装方法

    数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅向用户暴

露接口而把具体的实现细节隐藏起来的机制,C++ 通过创建类来支持封装和数据隐藏(public、 protected、private)。

#include <iostream>
#include <string>
using namespace std;
class Dog
{
public:
 string name;
 Dog(int i = 0)
{
   total = i;
}
 void addFood(int number) {
 total = total + number;
}
 int getFood() {
 return total;
 }
 private:
 int total;
};
int main()
{
    Dog dog;
   dog.name = "旺财";
   dog.addFood(3);
   dog.addFood(2);
   cout << dog.name << "总共获得了"<<dog.getFood() << "份食物" << endl;
   return 0;
}

分析:在构造函数里初始化 total 的数量,不初始化 total 的数量默认是随 int 类型的数。所以我们需要在构造函数里初始化,也体现了构造函数的功能,一般是在构造函数里 初始化。不要在类内直接赋值初始化,有可能有些编译器不支持。

目录
相关文章
|
1天前
|
存储 编译器 C++
【C++】深度解剖多态(下)
【C++】深度解剖多态(下)
8 1
【C++】深度解剖多态(下)
|
2天前
|
Web App开发 安全 Linux
Linux系统之安装Firefox浏览器
【7月更文挑战第8天】Linux系统之安装Firefox浏览器
24 8
|
1天前
|
Java 编译器 C++
【C++】深度解剖多态(上)
【C++】深度解剖多态(上)
13 2
|
1天前
|
Linux 数据处理 C语言
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
14 0
|
1天前
|
Linux C语言 C++
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
18 0
|
2天前
|
Ubuntu 安全 Linux
Linux系统之安装Ninvaders太空入侵者小游戏
【7月更文挑战第9天】Linux系统之安装Ninvaders太空入侵者小游戏
7 0
|
2月前
|
缓存 Linux 测试技术
安装【银河麒麟V10】linux系统--并挂载镜像
安装【银河麒麟V10】linux系统--并挂载镜像
781 0
|
2月前
|
关系型数据库 MySQL Linux
卸载、下载、安装mysql(Linux系统centos7)
卸载、下载、安装mysql(Linux系统centos7)
132 0
|
8天前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
|
2月前
|
存储 Linux 虚拟化
虚拟机(vmware)中安装linux系统
虚拟机(vmware)中安装linux系统