网络品牌推广多少钱/苏州排名搜索优化

网络品牌推广多少钱,苏州排名搜索优化,网上做问卷调查网站,虚拟机做的网站怎么让外网访问在C中,抽象(Abstraction) 是面向对象编程(OOP)的核心概念之一,它通过隐藏复杂的实现细节,仅暴露必要的接口来实现对现实世界的简化建模。类(Class) 是实现抽象的核心工具…

在C++中,抽象(Abstraction) 是面向对象编程(OOP)的核心概念之一,它通过隐藏复杂的实现细节,仅暴露必要的接口来实现对现实世界的简化建模。类(Class) 是实现抽象的核心工具,用于将数据(属性)和操作数据的方法(行为)封装成一个逻辑单元。

以下是C++中抽象和类的关键点解析:


1. 抽象的核心思想

  • 数据抽象:只暴露必要的信息(接口),隐藏内部实现细节(如数据存储方式、算法逻辑)。
  • 行为抽象:定义对象能做什么(方法),但不暴露如何做。

例如:汽车的驾驶者只需要知道方向盘、油门和刹车的功能(接口),无需了解引擎内部的燃烧过程(实现细节)。


2. 类的定义与封装

类通过访问修饰符publicprivateprotected)控制成员的可见性,实现封装:

  • public:对外暴露的接口(方法)。
  • private:隐藏的内部数据和实现细节。
class Car {
private:// 隐藏的实现细节int speed;          // 私有数据成员void updateEngine(); // 私有方法public:// 对外暴露的接口void accelerate() {updateEngine();speed += 10;}void brake() {speed -= 10;}int getSpeed() const { return speed; }
};

3. 抽象的实现步骤

  1. 定义类:将数据和方法组织到类中。
  2. 隐藏实现:使用 private 隐藏内部细节。
  3. 暴露接口:通过 public 方法提供对外的操作接口。

4. 抽象的优势

  • 降低复杂度:用户只需关注接口,无需关心内部实现。
  • 提高维护性:修改内部实现不影响外部代码。
  • 增强安全性:通过私有成员保护数据完整性。
  • 促进代码复用:类可以被多次实例化。

5. 示例:抽象的实际应用

#include <iostream>class BankAccount {
private:double balance; // 隐藏的余额public:BankAccount(double initialBalance) : balance(initialBalance) {}// 对外暴露的接口void deposit(double amount) {if (amount > 0) balance += amount;}void withdraw(double amount) {if (amount > 0 && balance >= amount) balance -= amount;}double getBalance() const {return balance;}
};int main() {BankAccount account(1000);account.deposit(500);account.withdraw(200);std::cout << "Current balance: " << account.getBalance() << std::endl;// 输出: Current balance: 1300return 0;
}
  • 抽象体现:用户调用 deposit()withdraw(),无需知道余额如何存储或校验逻辑。
  • 封装体现balance 是私有的,外部无法直接修改。

6. 抽象类(高级概念)

  • 纯虚函数与接口:通过定义含纯虚函数的抽象类(使用 virtual func() = 0;),强制派生类实现特定接口。
  • 示例
    class Shape {
    public:virtual double area() const = 0; // 纯虚函数,强制子类实现
    };class Circle : public Shape {
    private:double radius;
    public:Circle(double r) : radius(r) {}double area() const override {return 3.14159 * radius * radius;}
    };
    

总结

  • 是C++实现抽象的基本单元,通过封装数据和方法隐藏复杂性。
  • 抽象 的核心是分离接口与实现,提升代码的模块化和可维护性。
  • 合理使用 public/private 访问控制是实现抽象的关键。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# NX二次开发:拉伸UFUN函数避坑指南

大家好&#xff0c;今天想说一下拉伸相关UFUN函数的使用&#xff0c;尽量让大家别踩坑。 官方给出的拉伸UFUN函数有如下几个&#xff1a; &#xff08;1&#xff09;UF_MODL_create_extruded2 (view source) uf_list_p_tobjectsInputList of objects to be extruded.char *ta…

基于 Python 爬取 TikTok 搜索数据 Tiktok爬虫(2025.3.17)

1. 前言 在数据分析和网络爬虫的应用场景中&#xff0c;我们经常需要获取社交媒体平台的数据&#xff0c;例如 TikTok。本篇文章介绍如何使用 Python 爬取 TikTok 用户搜索数据&#xff0c;并解析其返回的数据。 结果截图 2. 项目环境准备 在正式运行代码之前&#xff0c;我…

关于deepseek R1模型分布式推理效率分析

1、引言 DeepSeek R1 采用了混合专家&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;架构&#xff0c;包含多个专家子网络&#xff0c;并通过一个门控机制动态地激活最相关的专家来处理特定的任务 。DeepSeek R1 总共有 6710 亿个参数&#xff0c;但在每个前向传播…

二叉树算法题实战:从遍历到子树判断

目录 一、引言 二、判断两棵二叉树是否相同 思路 代码实现 注意点 三、二叉树的中序遍历 思路 代码实现 注意点 四、判断一棵树是否为另一棵树的子树 思路 代码实现 注意点 ​编辑 五、补充 一、引言 作者主页&#xff1a;共享家9527-CSDN博客 作者代码仓库&am…

【开原宝藏】30天学会CSS - DAY1 第一课

下面提供一个由浅入深、按步骤拆解的示例教程&#xff0c;让你能从零开始&#xff0c;逐步理解并实现带有旋转及悬停动画的社交图标效果。为了更简单明了&#xff0c;以下示例仅创建四个图标&#xff08;Facebook、Twitter、Google、LinkedIn&#xff09;&#xff0c;并在每一步…

HarmonyOS第22天:解锁鸿蒙服务开发

走进鸿蒙服务开发的世界 在移动应用开发的领域中&#xff0c;HarmonyOS 以其独特的分布式理念和强大的系统能力&#xff0c;为开发者们开辟了一片崭新的天地。其中&#xff0c;服务开发作为 HarmonyOS 应用开发的关键环节&#xff0c;犹如一把神奇的钥匙&#xff0c;能够帮助开…

鸿蒙应用程序包HAP的开发与使用

1、HAP是什么&#xff1f; HAP&#xff08;Harmony Ability Package&#xff09;是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包&#xff0c;其主要分为两种类型&#xff1a;entry和feature。 entry&#xff1a;应用的主模块&#x…

解决qt中自定插件加载失败,不显示问题。

这个问题断断续续搞了一天多&#xff0c;主要是版本不匹配问题。 我们先来看下 Based on Qt 6.6.0 → 说明 Qt Creator 本身 是基于 Qt 6.6.0 框架构建的。MSVC 2019, 64-bit → 说明 Qt Creator 是使用 Microsoft Visual C 2019 编译器&#xff08;64 位&#xff09; 编译的。…

进程间通信--匿名管道

进程间通信介绍 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&…

CSS块元素、行内元素、行内块元素详解

一、块元素&#xff08;Block Elements&#xff09; 1.定义与特点 独占一行&#xff1a;默认情况下&#xff0c;块元素会从新的一行开始&#xff0c;并且其后的元素也会被推到下一行。可设置宽高&#xff1a;可以自由设置宽度&#xff08;width&#xff09;和高度&#xff08…

Word 小黑第22套

对应大猫23 续编号&#xff08;编号断了&#xff0c;从一开始&#xff09;&#xff1a;点编号&#xff0c;再设置编号值 插入以图标方式显示的文档&#xff1a;插入 -对象 -由文件创建 &#xff08;这里要链接到文件也要勾选 不然扣一分&#xff09; 一个页面设为横向不影响上…

平面波扬声器 VS球面波扬声器的原理与优缺点对比

一、核心定义与原理 1、平面波扬声器 1.1、平面波扬声器的定义‌&#xff1a;通过“相控阵”技术控制声波相位&#xff0c;使声波以平行线&#xff08;面&#xff09;定向传播的扬声器&#xff0c;声波近似平面振动&#xff0c;能量集中且衰减缓慢‌。 1.2、平面波扬声器的原…

设计模式之命令设计模式

命令设计模式&#xff08;Command Pattern&#xff09; 请求以命令的形式包裹在对象中&#xff0c;并传给调用对象。调用对象寻找可以处理该命令的对象&#xff0c;并把该命令传给相应的对象执行命令&#xff0c;属于行为型模式命令模式是一种特殊的策略模式&#xff0c;体现的…

力扣hot100二刷——二叉树

第二次刷题不在idea写代码&#xff0c;而是直接在leetcode网站上写&#xff0c;“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路&#xff0c;编程也很流利⭐⭐Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答⭐⭐⭐Sl…

从“自习室令牌”到线程同步:探秘锁与条件变量

目录 互斥 为什么需要锁 锁的原理--互斥 锁的使用 同步 锁的问题 条件变量 互斥 为什么需要锁 先看结果&#xff1a; 以下代码是我模拟创建线程抢票&#xff0c;由于不加锁导致票抢到了负数 main.cc: #include<vector> #include<iostream> #include"…

字符串哈希从入门到精通

一、基本概念 字符串哈希是将任意长度的字符串映射为固定长度的哈希值&#xff08;通常为整数&#xff09;的技术&#xff0c;核心目标是实现O(1)时间的子串快速比较和高效查询。其本质是通过数学运算将字符串转换为唯一性较高的数值&#xff0c;例如&#xff1a; ​​​​​​…

什么是数学建模?数学建模是将实际问题转化为数学问题

数学建模是将实际问题转化为数学问题&#xff0c;并通过数学工具进行分析、求解和验证的过程。 一、数学建模的基本流程 问题分析 • 明确目标&#xff1a;确定需要解决的核心问题。 • 简化现实&#xff1a;识别关键变量、忽略次要因素。 • 定义输入和输出&#xff1a;明确模…

搭建主从服务器

任务需求 客户端通过访问 www.nihao.com 后&#xff0c;能够通过 dns 域名解析&#xff0c;访问到 nginx 服务中由 nfs 共享的首页文件&#xff0c;内容为&#xff1a;Very good, you have successfully set up the system. 各个主机能够实现时间同步&#xff0c;并且都开启防…

AlexNet 有哪些首创?

现在大家每逢讨论人工智能&#xff0c;都离不开深度学习&#xff0c;这轮深度学习的热潮&#xff0c;追根溯源可以到2012年 AlexNet 的横空出世。后来&#xff0c;大家开始发现深度学习越来越强的能力。 AlexNet 的首创贡献 AlexNet&#xff08;2012年&#xff09;作为现代深…

【Linux我做主】基础命令完全指南上篇

Linux基础命令完全指南【上篇】 Linux基础命令完全指南github地址前言命令行操作的引入Linux文件系统树形结构的根文件系统绝对路径和相对路径适用场景Linux目录下的隐藏文件 基本指令目录和文件相关1. ls2. cd和pwdcdpwd 3. touch4. mkdir5. cp6. mv移动目录时覆盖写入的两种特…