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 类型的数。所以我们需要在构造函数里初始化,也体现了构造函数的功能,一般是在构造函数里 初始化。不要在类内直接赋值初始化,有可能有些编译器不支持。

目录
相关文章
|
2月前
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
98 0
|
2月前
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
105 1
Linux C/C++之IO多路复用(aio)
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
496 3
|
2月前
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
33 0
Linux C/C++之线程基础
|
2月前
|
Linux C++
Linux C/C++之IO多路复用(poll,epoll)
这篇文章详细介绍了Linux下C/C++编程中IO多路复用的两种机制:poll和epoll,包括它们的比较、编程模型、函数原型以及如何使用这些机制实现服务器端和客户端之间的多个连接。
35 0
Linux C/C++之IO多路复用(poll,epoll)
|
2月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
47 0
Linux C/C++之TCP / UDP通信
|
2月前
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
41 0
Linux c/c++之IPC进程间通信
|
2月前
|
Linux C++
Linux c/c++进程间通信(1)
这篇文章介绍了Linux下C/C++进程间通信的几种方式,包括普通文件、文件映射虚拟内存、管道通信(FIFO),并提供了示例代码和标准输入输出设备的应用。
36 0
Linux c/c++进程间通信(1)
|
2月前
|
Linux C++
Linux c/c++之进程的创建
这篇文章介绍了在Linux环境下使用C/C++创建进程的三种方式:system函数、fork函数以及exec族函数,并展示了它们的代码示例和运行结果。
47 0
Linux c/c++之进程的创建
|
2月前
|
Linux C++
Linux c/c++进程之僵尸进程和守护进程
这篇文章介绍了Linux系统中僵尸进程和守护进程的概念、产生原因、解决方法以及如何创建守护进程。
30 0