(面试)谈谈我对C++面向对象特性的理解

💯 博客内容:C++读取一行内个数不定的整数的方式

😀 作  者:陈大大陈

🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信!

💖 欢迎大家:这里是CSDN,我总结知识和写笔记的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

 

目录

对象是什么?

C语言和C++区别

CVSC++

什么是object-oriented


对象是什么?

什么是对象,对象就是一个东西,那什么是东西呢?

对象可以是可见的,也能是不可见的,他可以是一句话,也可以是一个杯子。

在程序设计里,变量就是对象。变量有类型,决定了变量里面存什么,对象一样有类型。

不同的对象有不同的特性,里面有一些数据时被保护起来的,外面是一些操作。

我们可以通过这些操作或者说是服务来访问数据,却不能直接访问受保护的数据。

两者的关系如图所示。

面向过程和面向对象的区别在于 如何去描述,描述什么。

C语言和C++区别

比如有一个人去菜市场买菜,如果用C语言来描述,就是按照时间顺序来描述事情发生的过程,买家张三买了一捆白菜,然后店主李四帮他称菜等等。

如果用C++来描述的话,就是描述事件中的对象,店主李四的吆喝传到张三的耳朵里,张三听到声音,他可能去买菜,也可能不去,这取决于白菜的价钱,说到白菜,又有了白菜的日期,产地,大小等等信息,C++就是描述对象以及对象间的关系。

从程序设计的角度来看的话,如果要设计一个打印三个整形的程序。

C语言来写的话是这样:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef struct print3d
{int x;int y;int z;
}Print3d;
void print3d_print(const Print3d* pd)
{printf("%d %d %d\n", pd->x, pd->y, pd->z);
}
Print3d a;int main()
{a.x = 1, a.y = 2, a.z = 3;print3d_print(&a);return 0;
}

C++来写的话则是这样:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class print3d
{
public:print3d(int a=1, int b=2, int c=3):_a(a),_b(b),_c(c){}void print(){cout << _a<<' ' << _b <<' ' << _c << endl;}private:int _a;int _b;int _c;
};
int main()
{print3d().print();
}

在C++的代码里,print3d()是一个匿名对象,我们要它来执行print这个操作。

CVSC++

我们看到,C语言的struct里面,只有数据

而C++的class里面,既有数据,也有操作。

C语言的代码,操作在结构体外面,所以要执行打印操作,需要传结构体的指针进去。

C++的代码,操作在结构体内部,所以当你要它做什么操作,对象自己就会操作,而不需要像C语言一样将对象的地址传到函数里面去。

什么是object-oriented

总的来说,面向对象是一种方法,这种方法是用来组织设计和实现的。

组织设计就是找到解决问题的思路。

实现就是把代码写出来。

面向对象关键的核心在于,对象是组织和实现主要关注的东西,而不是过程。

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

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

相关文章

yolov5 web端部署进行图片和视频检测

目录 1、思路 2、代码结构 3、代码运行 4、api接口代码 5、web ui界面 6、参考资料 7、代码分享 1、思路 通过搭建flask微型服务器后端&#xff0c;以后通过vue搭建网页前端。flask是第一个第三方库。与其他模块一样&#xff0c;安装时可以直接使用python的pip命令实现…

字符串常量池位于JVM哪里

Java6 和6之前&#xff0c;常量池是存放在方法区&#xff08;永久代&#xff09;中的。Java7&#xff0c;将常量池是存放到了堆中。Java8 之后&#xff0c;取消了整个永久代区域&#xff0c;取而代之的是元空间。运行时常量池和静态常量池存放在元空间中&#xff0c;而字符串常…

c语言:通讯录管理系统(增删查改)

前言&#xff1a;在大多数高校内&#xff0c;都是通过设计一个通讯录管理系统来作为c语言课程设计&#xff0c;通过一个具体的系统设计将我们学习过的结构体和函数等知识糅合起来&#xff0c;可以很好的锻炼学生的编程思维&#xff0c;本文旨在为通讯录管理系统的设计提供思路和…

雷达散射截面(RCS)相关概念

一、雷达散射截面(RCS) RCS被指定为直径为1.128 m的完美导电球体的倍数。该球体的可见表面为1 m,但仅具有较小的反向散射有效面积。因此,更好的反射表面可以具有比其几何尺寸大得多的RCS。 雷达截面积 二、简单目标的RCS 简单目标的RCS如下表所示: 三、瑞利、米氏和光学…

基于SSM的家庭财务管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

SpringBoot banner 样式 自动生成

目录 SpringBoot banner 样式 自动生成 图案网站&#xff1a; 1.第一步创建banner.txt文件 2.访问网站Ascii艺术字实现个性化Spring Boot启动banner图案&#xff0c;轻松修改更换banner.txt文件内容&#xff0c;收集了丰富的banner艺术字和图&#xff0c;并且支持中文banner下…

echarts

1 type值汇总 不同的type的值对应的图表类型如下&#xff1a; type: ‘bar’&#xff1a;柱状/条形图 type: ‘line’&#xff1a;折线/面积图 type: ‘pie’&#xff1a;饼图 type: ‘scatter’&#xff1a;散点&#xff08;气泡&#xff09;图 type: ‘effectScatter’&…

ansible - Role

1、简介&#xff1a; Ansible 中的角色&#xff08;Role&#xff09;是一种组织和封装Playbook的方法&#xff0c;用于管理和组织 Ansible代码。它可以将任务和配置逻辑模块化&#xff0c;以便在不同的Playbook中共享和重用。 2、通过 role 远程部署并配置 nginx (1) 准备目…

数组(数据结构)

优质博文&#xff1a;IT-BLOG-CN 一、简介 数组Array是一种线性表数据结构&#xff0c;它用一组连续的内存空间&#xff0c;存储一组具有相同类型的数据。 数组因具有连续的内存空间的特点&#xff0c;数据拥有非常高效率的“随机访问”&#xff0c;时间复杂度为O(1)。但因要保…

ubuntu使用whisper和funASR-语者分离-二值化

文章目录 一、选择系统1.1 更新环境 二、安装使用whisper2.1 创建环境2.1 安装2.1.1安装基础包2.1.2安装依赖 3测试13测试2 语着分离创建代码报错ModuleNotFoundError: No module named pyannote报错No module named pyannote_whisper 三、安装使用funASR1 安装1.1 安装 Conda&…

黑豹程序员-架构师学习路线图-百科:Database数据库

文章目录 1、什么是Database2、发展历史3、数据库排行网4、总结 1、什么是Database 当今世界是一个充满着数据的互联网世界&#xff0c;各处都充斥着大量的数据。即这个互联网世界就是数据世界。 支撑这个数据世界的基石就是数据库&#xff0c;数据库也可以称为数据的仓库。 …

typescript开发环境搭建

typescript是基于javascript的强类型标记性语言&#xff0c;使用typescript语言可开发出不同规模的、易于扩展的web前端页面应用&#xff0c;本文主要描述typescript的开发环境搭建。 npm install -g typescript 如上所示&#xff0c;在本地开发环境中&#xff0c;使用nodejs…

基于Redis实现消息队列的实践

为什么要基于Redis实现消费队列&#xff1f; 消息队列是一种典型的发布/订阅模式&#xff0c;是专门为异步化应用和分布式系统设计的&#xff0c;具有高性能、稳定性及可伸缩性的特点&#xff0c;是开发分布式系统和应用系统必备的技术之一。目前&#xff0c;针对不同的业务场…

localhost和127.0.0.1都可以访问项目,但是本地的外网IP不能访问

使用localhost和127.0.0.1都可以访问接口&#xff0c;比如&#xff1a; http://localhost:8080/zhgl/login/login-fy-list或者 http://127.0.0.1:8080/zhgl/login/login-fy-list返回json {"_code":10000,"_msg":"Success","_data":…

Pytorch目标分类深度学习自定义数据集训练

目录 一&#xff0c;Pytorch简介&#xff1b; 二&#xff0c;环境配置&#xff1b; 三&#xff0c;自定义数据集&#xff1b; 四&#xff0c;模型训练&#xff1b; 五&#xff0c;模型验证&#xff1b; 一&#xff0c;Pytorch简介&#xff1b; PyTorch是一个开源的Python机…

淘宝商品数据分析接口,淘宝商品详情数据接口

淘宝商品数据分析接口可以通过淘宝API进行获取。 淘宝API是一种程序接口&#xff0c;通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问淘宝平台的数据&#xff0c;包括商品信息、店铺信息、物流信息等&#xff0c;从而实现淘宝平台的数据开放。 通过淘宝API提供的…

外卖小程序源码的安全性和隐私考虑

外卖小程序源码的使用正在成为数字餐饮业的主流选择之一。然而&#xff0c;随着外卖业务的增长&#xff0c;安全性和隐私保护变得至关重要。在本文中&#xff0c;我们将探讨外卖小程序源码的安全性和隐私问题&#xff0c;并提供一些代码示例&#xff0c;以帮助开发者确保其应用…

回顾C++

大一的时候学过C&#xff0c;当时学得也不深&#xff0c;考试也是糊弄过去的&#xff0c;最近刷力扣的时候&#xff0c;决定一边刷题&#xff0c;一边复习和学习C&#xff0c;在此记录一些C的知识点。反正遇到一点就记录一点&#xff0c;会一直更新。

c++解压压缩包文件

功能实现需要依赖相关头文件和库文件&#xff0c;我这里的是64位的。需要的可以在这下载&#xff1a;https://download.csdn.net/download/bangtanhui/88403596 参考代码如下&#xff1a; #include <zip.h> #pragma comment(lib,"libzip.lib")//解压压缩包 /…

性能测试笔记

一、性能测试的概念 性能测试的概念 使用自动化工具&#xff0c;模拟不同的场景&#xff0c;对软件各项性能指标进行测试和评估的过程 性能测试的目的 评估当前系统能力&#xff0c;出现性能bug后&#xff0c;优化性能&#xff1a;预测未来的性能需求是否满足 例如&#xf…