(面试)谈谈我对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命令实现…

golang的切片使用总结二

如果没看golang切片的第一篇总结博客 golang的切片使用总结一-CSDN博客 &#xff0c;请浏览之 举例9&#xff1a;make([]int, a, b)后访问下标a的元素 s : make([]int, 10, 12) v : s[10] fmt.Printf("v:%v", v) 打印结果&#xff1a; panic: runtime error: index …

老卫带你学---leetcode刷题(76. 最小覆盖子串)

76. 最小覆盖子串 问题&#xff1a; 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字符串中该字符数量必…

分接开关接触不良导致变压器绕组的不平衡率超标

有载和无载分接开关接触不良的缺陷&#xff0c; 是主变压器各类缺陷中数量最多的一种&#xff0c; 约占 40%。 给变压器安全运行带来很大威胁。 例如&#xff1a;                                                      …

字符串常量池位于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’&…

react嵌套路由

react嵌套页面 先从路由身上导出 import { HashRouter, Routes, Route, Navigate } from react-router-dom; //引入页面&#xff1b; import Home from ./view/Home; import About from ./view/About; import Integrated from ./view/Integrated; import Sidebar from ./vie…

(高阶) Redis 7 第20讲 数据类型 源码篇

🌹 以下分享 Redis 源码分析,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 面试题 Redis 跳表了解吗?这个数据结构有啥缺点?Redis 项目中如何使用?Redis数据结构里哦阿姐哪些?布隆过滤…

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)。但因要保…

#力扣:9. 回文数@FDDLC

9. 回文数 - 力扣&#xff08;LeetCode&#xff09; 一、Java class Solution {public boolean isPalindrome(int x) {String s Integer.toString(x); // 转换成字符串return new StringBuilder(s).reverse().toString().equals(s);} } 二、C #include <string> #i…

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;针对不同的业务场…

群狼调研(长沙物业第三方评优)开展房地产市场调查内容设计

湖南房地产市场近年来表现出多元化的发展趋势。为了在竞争激烈的市场中获得更好的发展&#xff0c;房地产企业需要密切关注市场变化&#xff0c;合理规划开发项目&#xff0c;同时提高产品质量和服务水平&#xff0c;以满足消费者的需求和期望。群狼调研(长沙神秘顾客调查)在房…