C++深度解析教程笔记7

C++深度解析教程笔记7

  • 第13课 - 进阶面向对象(上)
    • 类和对象
    • 小结
  • 第14课 - 进阶面向对象(下)
    • 类之间的基本关系
      • 继承
      • 组合
    • 类的表示法
    • 实验-类的继承
  • 第15课 - 类与封装的概念
    • 实验-定义访问级别
      • cmd
    • 实验
    • 小结
  • 第16课 - 类的真正形态
    • 实验-struct&class
    • 实验-operator类的实现
    • 小结

本文学习自狄泰软件学院 唐佐林老师的 C++深度解析教程,图片全部来源于课程PPT,仅用于个人学习记录

第13课 - 进阶面向对象(上)

类和对象

类和对象是面向对象中的两个基本概念
类:指的是一类事物,是一个抽象的概念
对象:指的是属于某个类的具体实体
类是一种模型,这种模型可以创建出不同的对象实体
对象实体是类模型的一个具体实例

在这里插入图片描述

小结

每个类可以有多个对象
每个对象必然属于某个类

第14课 - 进阶面向对象(下)

类之间的基本关系

继承

从已存在类细分出来的类和原类之间具有继承关系(is a)
继承的类(子类)拥有原类(父类)的所有属性和行为
如下图:子类是惠普电脑和苹果电脑;父类是电脑

惠普电脑
电脑
苹果电脑

组合

一些类的存在必须依赖于其他类的关系叫组合
组合的类在某一个局部上由其他的类组成

如下图:

电脑
硬盘
CPU
内存
主板

类的表示法

在这里插入图片描述
利用继承简化重复的属性和行为

在这里插入图片描述
利用结构体、变量和函数描述

在这里插入图片描述

实验-类的继承

#include <stdio.h>struct Biology {bool living;
};struct Animal : Biology {bool movable;void findFood() { }
};struct Plant : Biology {bool growable;
};struct Beast : Animal {void sleep() { }
};struct Human : Animal {void sleep() { }void work() { }
};int main()
{return 0;
}

在这里插入图片描述

第15课 - 类与封装的概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验-定义访问级别

#include <stdio.h>#include <stdio.h>struct Biology 
{bool living;
};struct Animal : Biology 
{bool movable;void findFood(){ }
};struct Plant : Biology 
{bool growable;
};struct Beast : Animal 
{void sleep() { }
};struct Human : Animal 
{void sleep() { printf("I'm sleeping...\n");}void work() { printf("I'm working...\n");}
};struct Girl : Human
{
private:int age;int weight;
public:void print(){age = 22;weight = 48;printf("I'm a girl, I'm %d years old.\n", age);printf("My weight is %d kg.\n", weight);}
};struct Boy : Human
{
private:int height;int salary;
public:int age;int weight;void print(){height = 175;salary = 9000;printf("I'm a boy, my height is %d cm.\n", height);printf("My salary is %d RMB.\n", salary);}    
};int main()
{Girl g;Boy b;// g.age=10;// error: 'int Girl::age' is private within this contextg.print();b.age = 19;b.weight = 120;//b.height = 180;// error: 'int Boy::height' is private within this contextb.print();return 0;
}

cmd

E:\test>g++ 15-1.cppE:\test>a
I'm a girl, I'm 22 years old.
My weight is 48 kg.
I'm a boy, my height is 175 cm.
My salary is 9000 RMB.

在这里插入图片描述

实验

#include <stdio.h>int i = 1;struct Test
{
private://私有的,只允许类内部访问int i;public:int j;int getI(){i = 3;return i;}
};int main()
{int i = 2;Test test;test.j = 4;printf("i = %d\n", i);              // i = 2;printf("::i = %d\n", ::i);          // ::i = 1;//printf("test.i = %d\n", test.i);    // Error  error: 'int Test::i' is private within this contextprintf("test.j = %d\n", test.j);    // test.j = 4printf("test.getI() = %d\n", test.getI());  // test.getI() = 3return 0;
}
/*
i = 2
::i = 1
test.j = 4
test.getI() = 3*/

小结

在这里插入图片描述

第16课 - 类的真正形态

在这里插入图片描述
在这里插入图片描述

实验-struct&class

#include <stdio.h>struct A
{// defualt to publicint i;// defualt to publicint getI(){return i;}
};class B
{// defualt to privateint i;// defualt to privateint getI(){return i;}
};int main()
{A a;B b;a.i = 4;printf("a.getI() = %d\n", a.getI());// b.i = 4;//error: 'int B::i' is private within this context//printf("b.getI() = %d\n", b.getI());// error: 'int B::getI()' is private within this contextreturn 0;
}
/*
E:\test>g++ 16-1.cppE:\test>a
a.getI() = 4
*/

在这里插入图片描述
在这里插入图片描述

实验-operator类的实现

//operator.h
#ifndef _OPERATOR_H_
#define _OPERATOR_H_
class Operator
{
private:char mc;double mp0;double mp1;
public:bool setOperator(char op);void setParameter(double p0,double p1);bool result(double& r);};#endif//operator.c
#include "operator.h"
bool Operator::setOperator(char op){bool ret = false;if( (op == '+') || (op == '-') || (op == '*') || (op == '/') ){ret = true;mc = op;}else{mc = '\0';}return ret;//    bool res=false;
//    operator_cla::mc=mmc;
//    res=true;
//    return res;
}
void Operator::setParameter(double p0,double p1)
{Operator::mp0=p0;Operator::mp1=p1;
}
bool Operator::result(double& r)
{bool res=false;switch(mc){case '+':r=Operator::mp0+Operator::mp1;res=true;break;case '-':r=Operator::mp0-Operator::mp1;res=true;break;case '*':r=Operator::mp0*Operator::mp1;res=true;break;case '/':if(Operator::mp1>-0.000000001&&Operator::mp1<0.000000001){//break;}else{r=Operator::mp0/Operator::mp1;res=true;}break;}return res;}//main.c
#include <stdio.h>
#include "operator.h"int main()
{double r=0;Operator op;op.setOperator('+');op.setParameter(3.5,6);if(op.result(r)){printf("3.5+6=%f\n",r);}op.setOperator('-');op.setParameter(3.5,6);if(op.result(r)){printf("3.5-6=%f\n",r);}op.setOperator('/');op.setParameter(3.5,0);if(op.result(r)){printf("3.5/0=%f\n",r);}else{printf("3.5/0 calculate error\n");}return 0;
}
/*
3.5+6=9.500000
3.5-6=-2.500000
3.5/0 calculate error
*/

小结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3004099.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【氮化镓】GaN器件可靠性及市场前景概述

文章是关于氮化镓&#xff08;GaN&#xff09;场效应晶体管&#xff08;FET&#xff09;技术在空间应用中的可靠性、辐射效应和市场前景的概述。文章由Airbus Defence & Space的多位专家撰写&#xff0c;涵盖了GaN FET技术的多个关键方面&#xff0c;包括技术概述、可靠性问…

reactjs后台管理系统搭建

1 通过yarn 模板创建reactjs项目 yarn create vite reactjs-antdesign-admin --template react-ts 2 基础路由测试 定义一个router/index.tsx&#xff0c;里面定义路由组件 const Router: React.FC () > {return (<HashRouter><Switch><Route path"…

免费开源语音克隆-GPT-SoVITS-WebUI只需 5 秒的声音样本

语音克隆-GPT-SoVITS-WebUI 强大的少样本语音转换与语音合成Web用户界面。 功能&#xff1a; 零样本文本到语音&#xff08;TTS&#xff09;&#xff1a; 输入 5 秒的声音样本&#xff0c;即刻体验文本到语音转换。 少样本 TTS&#xff1a; 仅需 1 分钟的训练数据即可微调模型…

【大模型应用】使用 Windows 窗体作为 Copilot 应用程序的 Ollama AI 前端(测试llava视觉问答)...

项目 “WinForm_Ollama_Copilot” 是一个使用Windows Forms作为前端的Ollama AI Copilot应用程序。这个项目的目的是提供一个用户界面(UI)&#xff0c;通过它&#xff0c;用户可以与Ollama AI进行交互。以下是该项目的一些关键特点和功能&#xff1a; Ollama Copilot: 这是一个…

Linux搭建mysql环境

搭建 MySQL 环境 1、使用 wget 下载安装包&#xff0c;下载到 opt 目录中 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2、安装 MySQL 公钥 rpm -i mysql57-community-release-el7-10.noarch.rpmrpm --import https://repo.mysql.com/RPM-GP…

聊聊持续测试

这是鼎叔的第九十六篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 本人新书《无测试组织-测试团队的敏捷转型》已出版&#xff08;机械工业出版社&#xff09;。 如果在测试部门只能推行一个技术建设项目&#xff0c;那鼎叔就会选择“持续测试”。 持续测…

Android手写自己的路由SDK

实现自己的路由框架 ​ 在较大型的Android app中常会用到组件化技术&#xff0c;针对不同的业务/基础功能对模块进行划分&#xff0c;从上到下为壳工程、业务模块、基础模块。其中业务模块依赖基础模块&#xff0c;壳工程依赖业务模块。同级的横向模块&#xff08;比如多个业务…

第四课 communcation服务-can基础第一弹

根据nxp can开发白皮书&#xff0c;介绍s32k1系列芯片的can通信速率、外部晶振、同步段、传播段、相位段之间的关系。 1.Can通信基础概念: 通信速率&#xff1a;单位时间内可以传输的数据量 最小位时间:Tq&#xff08;Time Quantum&#xff0c;时间量子&#xff09;是CAN控制…

【Web】CTFSHOW 中期测评刷题记录(1)

目录 web486 web487 web488 web489 web490 web491 web492 web493 web494 web495 web496 web497 web498 web499 web500 web501 web502 web503 web505 web506 web507 web508 web509 web510 web486 扫目录 初始界面尝试文件包含index.php&am…

14.集合、常见的数据结构

集合 概念 Java中的集合就是一个容器&#xff0c;用来存放Java对象。 集合在存放对象的时候&#xff0c;不同的容器&#xff0c;存放的方法实现是不一样的&#xff0c; Java中将这些不同实现的容器&#xff0c;往上抽取就形成了Java的集合体系。 Java集合中的根接口&#x…

B+树详解与实现

B树详解与实现 一、引言二、B树的定义三、B树的插入四、B树的删除五、B树的查找效率六、B树与B树的区别和联系 一、引言 B树是一种树数据结构&#xff0c;通常用于数据库和操作系统的文件系统中。它的特点是能够保持数据稳定有序&#xff0c;其插入与修改拥有较稳定的对数时间…

RoNID:通过生成可靠标签与聚类友好型表征来实现新意图的发现

论文地址&#xff1a;https://arxiv.org/abs/2404.08977 原文地址&#xff1a;intents-are-not-going-away-ronid-is-a-new-intent-discovery-framework 2024 年 4 月 26 日 Robust New Intent Discovery&#xff08;RoNID&#xff09;框架致力于在开放域场景中识别已知意图并合…

使用Android Studio 搭建AOSP FrameWork 源码阅读开发环境

文章目录 概述安装Android Studio编译源码使用Android Studio打开源码制作ipr文件直接编译成功后自动打开Android Studio 修改SystemUI验证开发环境 概述 我们都知道Android的系统源码量非常之大&#xff0c;大致有frameworka层源码&#xff0c;硬件层(HAL)源码&#xff0c;内…

yudao-cloud微服务系统系统模块+后台管理系统成功运行

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 第一章 芋…

c# winform快速建websocket服务器源码 wpf快速搭建websocket服务 c#简单建立websocket服务 websocket快速搭建

完整源码下载----->点击 随着互联网技术的飞速发展&#xff0c;实时交互和数据推送已成为众多应用的核心需求。传统的HTTP协议&#xff0c;基于请求-响应模型&#xff0c;无法满足现代Web应用对低延迟、双向通信的高标准要求。在此背景下&#xff0c;WebSocket协议应运而生…

分享自己一篇在亚马逊云科技AWS官网发的Blog技术文章

小李哥在亚马逊AWS官网&#xff0c;作为第一作者发了自己的第一篇AWS Blog文章&#xff0c;也是自己今年在AWS官网的第11篇文章。文章主要内容是描述为出海的金融企业&#xff0c;搭建满足PCI-DSS合规、FIPS 140-2 Level 3安全标准的传输中数据加密云端方案&#xff0c;主要用于…

Mac环境下ollama部署和体验

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 关于ollama ollama和LLM&#xff08;大型语言模型&#xff09;的关系&#xff0c;类似于docker和镜像&#xff0c;可以在ollama服务中管理和运行各种LLM&…

C语言/数据结构——每日一题(反转链表)

一.前言 大家好&#xff01;今天又是每日一题环节。今天我为大家分享了一道单链表题——反转链表。 废话不多说&#xff0c;让我们直接进入正题吧。 二.正文 1.1题目信息 这是一道leetCode上面的一道题&#xff1a;https://leetcode.cn/problems/reverse-linked-list 1.2解…

【跟马少平老师学AI】-【神经网络是怎么实现的】(九)长短期记忆网络

一句话归纳&#xff1a; 1&#xff09;RNN也会存在梯度消失的问题。 2&#xff09;同一句话&#xff0c;对于不同的任务&#xff0c;句中不同的词起的作用也不一样。 3&#xff09;LSTM&#xff08;长短期记忆&#xff09;子网络&#xff1a; 门&#xff0c;让输入经过运算&…

软件标准建设体系规范过程性文档(软件开发,管理,安全,运维等各阶段全文档)

软件标准建设体系规范是确保软件开发过程标准化、高质量和可维护性的关键。它通常包括一系列文档、规范、流程和最佳实践&#xff0c;以确保软件项目的成功实施和交付。以下是一个软件标准建设体系规范的基本框架&#xff1a; 软件全套资料获取方式1&#xff1a;进主页。 获取…