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

news/2025/2/21 7:52:06/

面试题小结:

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.ppmy.cn/news/1094723.html

相关文章

SpringBoot 整合MyBatisPlus

简介 MyBatis Plus&#xff08;也称为MyBatis&#xff09;是MyBatis框架的增强版本&#xff0c;MyBatis是一种流行的轻量级Java持久化框架。MyBatis Plus提供了额外的功能&#xff0c;并简化了对MyBatis的使用&#xff0c;使得在Java应用程序中使用数据库更加便捷。 官方文档&a…

2023高教社杯数学建模E题思路分析 - 黄河水沙监测数据分析

# 1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响&#xff0c; 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…

走进中国水果罐头领军品牌真心罐头—快消食品企业的全链路数字化

近日&#xff0c;【数字中国-高效增长】名城优企游学系列之走进真心罐头活动成功举办&#xff01; 真心罐头食品有限公司&#xff08;以下简称为“真心罐头”&#xff09;初创于1990年&#xff0c;位于素有“北方明珠”、“黄桃之乡”美誉的海滨城市——辽宁省大连市&#xff0…

SRT参数说明

1.超时选项 connect_timeout 连接超时时间&#xff0c;单位毫秒&#xff0c;默认值为3秒。 当RTT > 1500毫秒(2次握手交换)时&#xff0c;SRT无法连接。此选项适用于caller和rendezvous模式。 listen_timeout 监听超时时间&#xff0c;单位毫秒 timeout 为读、写和连接操作…

Unity之创建第一个2D游戏项目

一 Unity环境配置 1.1 Untity资源官网下载&#xff1a;https://unity.cn/releases 1.2 Unity Hub集成环境&#xff0c;包含工具和项目的管理 1.3 Unity Editor编辑器 1.4 Visual Studio 2022脚本编辑器 1.5 AndroidSKD&#xff0c;JDK&#xff0c;NDK工具&#xff0c;用于and…

宠物行业如何进行软文营销

如今&#xff0c;宠物已经成为了人们生活中不可或缺的一部分&#xff0c;大众对于萌宠的喜爱与日俱增&#xff0c;随着“萌宠经济”升温&#xff0c;越来越多的商机开始出现&#xff0c;伴随着宠物市场竞争的日益激烈&#xff0c;宠物行业的营销光靠硬广告很难吸引受众&#xf…

[刷题记录]牛客面试笔刷TOP101

牛客笔试算法必刷TOP101系列,每日更新中~ 1.合并有序链表2023.9.3 合并两个排序的链表_牛客题霸_牛客网 (nowcoder.com) 题意大致为: 将两个链表中的元素按照从小到大的顺序合并成为一个链表. 所给予的条件: 给出的所要合并的链表都是从小到大顺序排列的. 思路: 创建一…

【CSDN技术】Markdown编辑器如何使用-csdn博客编写入门

Markdown编辑器如何使用-csdn博客编写入门 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自…