day42:C++ day2,C++对C的补充(引用、动态内存分配与回收、函数扩充以及结构体扩充)

面试题小结:

1、指针与引用的区别?

(1)指针指向的是变量的地址,而引用是指向变量本身;

(2)指针可以有多级指针,而引用只有一级引用;

(3)指针可以不初始化,但是引用必须初始化;

(4)指针可以改变指向,但是引用初始化后就不能更改对象;

(5)指针用const修饰时可以修饰指针指向和指向的内容,但引用只能修饰变量的值;

(6)没有引用数组,但是有数组引用;

(7)指针在分配时需要额外分配8bit空间,而引用不需要分配;

(8)指针在使用时需要解引用,而引用是直接使用。

2、malloc、free、new、delete区别

(1)malloc和free是以字节为单位向堆区申请空间,而new和delete是以数据类型为单位;

(2)malloc和free是库函数,而new和delete是关键字;

(3)malloc和free的返回值是void*类型的万能指针,而new和delete返回的是设置的数据类型;

(4)malloc申请时不能进行初始化,而new申请可以进行初始化;

(5)new申请空间时会调用构造函数,malloc不会

(6)delete释放空间时,会调用析构函数,free不会

3、C++中const的使用

const最核心的使用原理是保护;

(1)修饰常量:表示修饰的常量不能进行修改;

(2)修饰指针:可以修饰指针本身(指针指向)也可以修饰指向的内容;

(3)修饰函数:修饰函数的参数和返回值时,是为了保护传参和返回值,防止被修改;

(4)修饰成员变量时表示不能被访问和修改;

4、什么是回调函数?

回调函数通过函数指针来实现,通过传递函数地址,用函数指针来接受函数地址,再通过函数参数类型,来完成回调函数,在回调函数的使用中可以大大提高编程的效率,常接触到的回调函数有创建线程时构造的线程体,其本质也是回调函数。

5、函数重载的相关内容

函数重载的使用是为了达到一名多用的目的,但是其参数列表必须不同,函数名相同,且在同一个作用域下,函数重载和返回值没有关系。

6、谈谈对面向对象的特征

首先,面向对象有三大特征:封装、继承、多态(抽象),面向对象的概念就是将一个事物的所有行为和属性等万事万物都封装起来,我们称之为类,并在类中提供公共接口,用户可以通过公共接口来完成对该类实例化对象的操作。

作业:

1、

封装一个结构体,结构体中包含一个私有数组,用来存放学生的成绩,包含一个私有变量,用来记录学生个数,

提供一个公有成员函数,void setNum(int num)用于设置学生个数

提供一个公有成员函数:void input(),用来对所有学生的成绩进行输入工作

提供一个公有成员函数:void sort(),用来实现对存储的学生成绩进行降序排序

提供一个公有的成员函数:void show(),用于将所有学生的成绩展示出来

在主程序中,完成相关函数的调用

#include <iostream>using namespace std;struct Data{
private:double arr[50];
private:int num;
public:void setNum(int num){this->num = num;/*cout<<"请输入学生个数"cin>>num;*/}
public:void input(){for(int i=0;i<num;i++){cout<<"请输入第"<<i+1<<"个学生的成绩:";cin>>arr[i];}}
public:void sort(){for(int i=1;i<num;i++){for(int j=1;j<num;j++){if(arr[j]>arr[j-1]){double temp=arr[j];arr[j]=arr[j-1];arr[j-1]=temp;}}}}
public:void show(){cout<<"学生成绩从高到低依次为:";for(int i=0;i<num;i++){if(0==i){cout<<arr[i];continue;}cout<<"  "<<arr[i];}cout<<endl;}
};
int main()
{Data a;int num;cout<<"请输入学生个数:";cin >> num;a.setNum(num);a.input();a.sort();a.show();return 0;
}

2、思维导图:有道云笔记

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

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

相关文章

访问者模式的一个使用案例——文档格式转换

访问者模式的一个使用案例——文档格式转换 假设我们在开发一个文档编辑器&#xff0c;它支持多种不同的文档元素&#xff08;如段落、图片、表格等&#xff09;&#xff0c;现在我们需要添加一个功能——将文档导出为 HTML 或 Markdown 格式。 这就是一个典型的访问者模式的…

2023京东医疗保健器械行业数据分析(京东数据分析平台)

随着人们对自身健康的重视程度不断加深&#xff0c;当前市场中各类对疾病具有诊断、预防、监护、治疗或者缓解的医疗保健仪器越来越受到消费者的关注。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年7月份&#xff0c;京东平台医疗保健仪器的销量为950万&#xf…

SpringCloud(34):Nacos服务发现

1 从单体架构到微服务 1.1单体架构 Web应用程序发展的早期,大部分web工程师将所有的功能模块打包到一起并放在一个web容器中运行,所有功能模块使用同一个数据库,同时,它还提供API或者UI访问的web模块等。 尽管也是模块化逻辑,但是最终它还是会打包并部署为单体式应用,这…

unity 安卓端使用JSON(LitJson)

注&#xff1a;&#xff01;&#xff01;&#xff01;untiy 打包安卓平台不允许使用Unity自带的json工具Newtonsoft.Json LitJson不支持float类型的字符。 LitJson支持的格式如下&#xff1a; public JsonData(bool boolean); public JsonData(double number); public Jso…

【HTML5高级第三篇】drag拖拽、音频视频、defer/async属性、dialog应用

文章目录 一、拖拽事件1.1 拖拽事件1.2 案例&#xff1a;拖拽丢弃图片 二、音频和视频三、defer 与 async 属性3.1 概述3.2 示例一&#xff1a;3.3 示例二&#xff1a; 四、dialog 元素 一、拖拽事件 原生JavaScipt案例合集 JavaScript DOM基础 JavaScript 基础到高级 Canvas…

React 全栈体系(四)

第二章 React面向组件编程 六、组件的生命周期 1. 效果 需求:定义组件实现以下功能&#xff1a; 让指定的文本做显示 / 隐藏的渐变动画从完全可见&#xff0c;到彻底消失&#xff0c;耗时2S点击“不活了”按钮从界面中卸载组件 <!DOCTYPE html> <html lang"e…

ES6常用新特性

ES6改动很大&#xff0c;可以简单分为四类 1、解决原有语法的缺陷和不足 例如&#xff1a;let&#xff0c;const 2、对原有语法进行增强 解构、扩展、模板字符串 3、新增对象、全新的方法&#xff0c;全新的功能 Object.assign()、Proxy对象代理、Reflect 等等 4、全新的数据类…

手写题目3:算出一个dom里面所有元素的节点数

算出一个dom里面所有元素的节点数 start 获取一个dom元素内的所有节点数。 代码 // 递归函数 function countNodes(node) {// 计算自身var count 1;// 判断是否存在子节点if (node.hasChildNodes()) {// 获取子节点var cnodes node.childNodes;// 对子节点进行递归统…

elasticsearch的索引库操作

索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。我们要向es中存储数据&#xff0c;必须先创建“库”和“表”。 mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据类型&#xff0c;常见的…

蓝桥杯官网填空题(矩形切割)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明有一些矩形的材料&#xff0c;他要从这些矩形材料中切割出一些正方形。 当他面对一块矩形材料时&#xff0c;他总是从中间切割一刀&#xff0c;切出一块最大的…

[论文笔记]A COMPARE-AGGREGATE MODEL FOR MATCHING TEXT SEQUENCES

引言 今天带来论文A COMPARE-AGGREGATE MODEL FOR MATCHING TEXT SEQUENCES的阅读笔记。 很多NLP任务,包括阅读理解、文本蕴含和问答任务,都需要在序列之间进行比较。匹配序列间重要的单位是这些解决这些任务的关键。本篇工作提出了一个通用的比较聚合(compare-aggragate)框…

Docker Compose常用命令

常用命令 1.1 restart, start, stop-- 启动和停止服务 命令必须在 docker-compose.yml文件所在的目录下执行。 # 前台启动, 启动项目中的所有服务。 $. docker-compose up# 后台启动, 启动所有服务并在后台运行。 $. docker-compose up -d# 停止所有服务。 $. docker-compose …

大数据课程K18——Spark的ALS算法与显式矩阵分解

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Spark的ALS算法与显式矩阵分解; ⚪ 掌握Spark的ALS算法原理; 一、ALS算法与显式矩阵分解 1. 概述 我们在实现推荐系统时,当要处理的那些数据是由用户所提供的自身的偏好数据,这些…

什么是机器学习中的监督学习和无监督学习,举例说明

1、什么是机器学习中的监督学习和无监督学习&#xff0c;举例说明。 监督学习&#xff1a; 监督学习是一种机器学习的方法&#xff0c;它通过已知的数据&#xff08;即训练数据&#xff09;来预测未知的数据&#xff08;即测试数据&#xff09;。例如&#xff0c;一个监督学习…

k8s node环境部署(三)

1、添加node1、node2环境 前面配置master环境的截图最后一段 复制下来 分别在node主机执行 kubeadm join 192.168.37.132:6443 --token p5omh3.cqjqt8ymrwkdn2fc \ --discovery-token-ca-cert-hash sha256:608a1cbadd060cfdeac2fae84c19609061b750ab51bf9a19887ff7ea…

Ubuntu之apt-get系列--安装JDK8--方法/教程

原文网址&#xff1a;Ubuntu之apt-get系列--安装JDK8--方法/教程_IT利刃出鞘的博客 简介 本文介绍如何在Ubuntu下安装JDK8。 验证是否安装 可以通过如下命令判断系统是否有安装ssh服务&#xff1a; 命令 java -version 结果 如上所示&#xff0c;表示还没有安装。 查看…

实训三:多表查询 - 大学数据库创建与查询实战

大学数据库创建与查询实战 第1关&#xff1a;数据库表设计任务描述相关知识大学数据库的整体设计教师信息表&#xff08;instructor&#xff09;开课信息表&#xff08;section&#xff09; 编程要求测试说明参考代码 第2关&#xff1a;查询&#xff08;一&#xff09;任务描述…

从零开始学习软件测试-第38天笔记

接口测试 什么是接口 接口是两个独立部件共享信息的边界&#xff0c;测试中常说的接口大部分是web接口。web接口是遵循了http或者https协议的URL。 数据的流转过程 由客户端通过接口将数据发送给服务器。服务器收到数据之后&#xff0c;取出想要的数据&#xff0c;拼装成一…

[虚幻引擎插件介绍] DTGlobalEvent 蓝图全局事件, Actor, UMG 相互回调,自由回调通知事件函数,支持自定义参数。

本插件可以在虚幻的蓝图 Actor&#xff0c; Obiect&#xff0c;UMG 里面指定绑定和执行消息&#xff0c;可带自定义参数。 参数支持 Bool&#xff0c;Byte&#xff0c;Int&#xff0c;Int64&#xff0c;Float&#xff0c;Name&#xff0c;String&#xff0c;Text&#xff0c;Ve…

Ubuntu 20.04 LTS 安装Kubernetes 1.26

1、环境配置 (1)添加主机名称解析记录 cat > /etc/hosts << EOF 192.168.44.200 master01 master01.bypass.cn 192.168.44.201 node01 node01.bypass.cn 192.168.44.202 node02 node02.bypass.cn EOF(2)禁止K8s使用虚拟内存 swapoff -a sed -ri s(.*swap.*)#\1…