C++ day2

2023-11-02

https://note.youdao.com/s/BGiSQ9uwicon-default.png?t=N7T8https://note.youdao.com/s/BGiSQ9uw

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

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

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

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

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

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

 

#include <iostream>

using namespace std;

struct STU{

private:
    double *p = new double[30];
private:
    int num;
public:
    void setNum(){
        cin>>num;
    }
public:
    void input(){
        for(int i=0;i<num;i++){
            cin>>p[i];
        }
    }
public:
    void sort(){
        for(int i=1;i<num;i++){
            for(int j=0;j<num-i;j++){
                if(p[j]<p[j+1]){
                    int temp;
                    temp = p[j];
                    p[j] = p[j+1];
                    p[j+1] = temp;
                }
            }
        }
    }
public:
    void show(){
        cout<<"学生成绩依次为:"<<endl;
        for(int i=0;i<num;i++){
            cout<<p[i]<<' ';
        }
    }
};
int main()
{
    cout<<"请输入学生数:"<<endl;
    STU a;
    a.setNum();
    cout<<"请输入每个学生成绩:"<<endl;
    a.input();
    a.sort();
    a.show();
    return 0;
}

 

面试题:

 1.指针与引用的区别:

(1).指针是记录变量的地址,而引用是相当于复制变量,是其本身

(2).定义指针会占内存8字节空间,但是引用不会,和变量共用同一片空间

(3).指针需要解引用才可以改变变量的值,引用只需改变自己的值就可以改变变量的值

(4).指针定义后可以改变指向,但是引用不能改变

(5).指针可以有多层,但是引用只能有一层

(6).const修饰指针可以控制其指向的空间和值,修饰引用时只能修饰值

(7).没有引用数组,但是有数组引用

(8).定义引用必须初始化,而定义指针可以不初始化

2.malloc,free和new,delete区别

(1).new申请空间时,可以给堆区空间初始化,malloc不可以;

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

(3).new申请空间时以数据类型为单位,而malloc申请空间时以字节为单位

(4).new申请的空间返回的结果申请类型的指针,而malloc申请空间时返回void*类型,需要进行强转后使用

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

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

3.C++中const的使用

(1).修饰变量:使用const修饰的变量在声明时必须进行初始化,并且在程序运行期间其值是不可修改的

(2).修饰函数返回类型:const可以用于修饰函数返回类型,表示返回的值是一个常量,不能被修改

(3).修饰函数参数:使用const修饰函数参数表示该参数在函数内部是只读的,不能被修改。这样可以确保函数不会无意间修改参数的值

(4).修饰成员函数:const可以用于修饰类的成员函数,表示该函数在内部不会修改对象的状态。这样的成员函数称为常量成员函数,可以在常量对象上进行调用

4.什么是回调函数

回调函数是指一个被传入另一个函数的函数指针(或函数对象、函数引用),在特定事件或条件满足时由另一个函数调用。

回调函数的使用可以将程序的逻辑控制权转移给另一个函数或模块,在事先约定的情况下,由另一个函数来调用指定的回调函数,以响应某些事件或完成特定的任务。

5.函数重载的相关内容

C++中支持函数重载,即:在同一作用域下,可以定义多个同名的函数,但是要求参数列表必须不同,所谓函数重载,是静态多态的一种,能够做到“一名多用”

函数重载的要求:

1、函数名相同

2、形参列表必须不同:可以是参数个数不同、参数类型不同

3、作用域也要相同

4、跟返回值没有关系

调用:当调用函数时,系统会根据传递的实参类型,自动匹配相应的重载函数

6.对对象的理解

在C++中,对象是一种具有状态和行为的数据结构。它是基于类(class)定义的,通过实例化类(创建对象)来使用。

对象的概念是将现实世界的事物抽象成计算机程序中的实体。每个对象都有自己的属性(成员变量)和操作(成员函数),这些属性和操作定义了对象的行为和能力。

C++中的对象可以分为以下几类:

  1. 基本数据类型对象:例如整型、浮点型、字符型等。
  2. 自定义类对象:通过类的定义,我们可以创建属于该类的对象。这些对象具有自己的属性和行为,可以按需调用类的成员函数来实现所需功能。
  3. 指针和引用:指针和引用本身也可以看作是对象,它们在C++中用于间接访问和操作其他对象。

通过使用对象,我们可以将程序的逻辑划分为多个独立的模块,每个模块负责管理和处理自己相关的数据和问题。通过面向对象的思想,可以更好地组织和管理代码,提高代码的可读性、可维护性和可扩展性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ day2 的相关文章

  • 无法使用 strptime() 获取秒数

    我收到 YYYY MM DDThh mm ss S Z hh mm 这种格式的日期时间 我正在尝试使用复制该值strptime如下所示 struct tm time 0 char pEnd strptime datetime Y m dT
  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 深度学习知识点全面总结

    作者简介 大数据专业硕士在读 CSDN人工智能领域博客专家 阿里云专家博主 专注大数据与人工智能知识分享 公众号 GoAI的学习小屋 免费分享书籍 简历 导图等资料 更有交流群分享AI和大数据 加群方式公众号回复 加群 或 点击链接 专栏推
  • java文件流读写操作

    file 内存 输入流 gt 程序 输出流 gt file 内存 当我们读写文本文件的时候 采用Reader是非常方便的 比如FileReader InputStreamReader和BufferedReader 其中最重要的类是Input
  • Java内部培训:有哪些避免空指针的方法?

    在Java中 有几种方法可以避免空指针异常 NullPointerException 下面是其中一些常见的方法 并附带一些示例代码 1 使用条件判断 使用条件判断语句 如if语句 在使用可能为空的对象之前进行检查 以确保对象不为空 这是一种
  • 2021-10-20 q5 信号槽

    Qt5 1 自定义槽 普通函数的用法 2 任意的成员函数 普通全局函数 静态函数 3 由于信号都是没有返回值 所以 槽函数一定没有返回值 connect button QPushButton pressed this MainWidget
  • 【模板】一维前缀和与一维差分

    文章目录 1 一维前缀和 1 1 求解一维前缀和数组 1 2 区间查询 2 一维差分 2 1 定义 2 2 区间修改 2 3 初始化 前缀和是一种极其优秀的线性结构 也是一种重要的思想 能极大地降低区间查询的时间复杂度 为了方便 涉及到前缀
  • PyCharm 集成安装PyQt5及其工具(Qt Designer、PyUIC)

    注意 本文基于Python3 搭建Qt5 环境 进行相关工具完善总结 Qt Designer 安装 一 点击菜单栏 File 弹出下拉框 选择 Setting 弹出设置界面 在设置界面中选择 Tools External Tools 该部分
  • Xilinx Vivado开发环境之Timing Constraints的使用

    引言 随着设计复杂度和调用IP丰富度的增加 在调试时序约束的过程中 用户常常会对除了顶层约束外所涉及的繁杂的时序约束感到困惑而无从下手 举个例子 XDC里面并没有指定set false path 为什么有些路径在分析时忽略了 我怎么去定位这
  • 2021电赛资源及经验总结

    电赛总结 苦逼的电赛终于结束 人生很难得的一次经历 非常值得总结和怀念 为此特写一篇文章 本文章目的在于为广大电赛小白和电赛老白提供资源和经验上的帮助 如果需要电赛资源或者有任何问题的可以联系我 微信 wpt666aaa 或QQ 20367
  • 为Nginx申请和使用Let‘s Encrypt的SSL免费证书

    文章目录 一 certbot是什么 二 获取SSL免费证书 2 1 部署certbot 2 2 获取证书 2 3 配置证书 三 更新证书 一 certbot是什么 我们申请和使用Let s Encrypt的免费HTTPS证书 就需要一个证书
  • CSS中英文换行问题

    1 word break break all 只对英文起作用 以字母作为换行依据 2 word wrap break word 只对英文起作用 以单词作为换行依据 3 white space pre wrap 只对中文起作用 强制换行 4
  • springboot读取静态json文件数据

    springboot读取静态json文件数据 json数据如下 code 1 data avatar https randy168 com 1533262153771 gif name admin roles admin data inde
  • 华为认证之HCIP-Video Conference

    目录 Wireshark抓包工具介绍 1 1 Wireshark的界面组成 1 2 Wireshark的基本操作 H 323协议体系 2 1 H 323协议基础 2 2 会议调度信令流程 2 3 常见故障定位分析 SIP协议原理 3 1 概
  • tensorflow自定义激活函数

    前言 因为研究工作的需要 要更改激活函数以适应自己的网络模型 但是单纯的函数替换会训练导致不能收敛 这里还有些不清楚为什么 希望有人可以给出解释 查了一些博客 发现了解决之道 下面将解决过程贴出来供大家指正 1 背景 之前听某位老师提到说t
  • 摄像头参数介绍 ———— 信噪比(SNR)

    文章目录 介绍 计算 提升 方法1 增加曝光时间 方法2 多帧图像平均 方法3 像素融合Binning 方法4 使用QE更高的摄像头 方法5 使用像元尺寸更大的摄像头 方法6 去噪 介绍 信噪比 英文名称叫做SNR或S N SIGNAL N
  • git日常工作中常用指令

    git常用日常开发指令 引言 常用git指令 引言 日常开发中 无论是多人开发还是一个人开发 都需要一个好的代码管理仓库 于是掌握git常用的日常开发指令非常重要 常用git指令 重命名本地分支 不需要切换到其它分支下 git branch
  • 蓝桥杯算法训练VIP-比赛安排

    题目 题目链接 题解 DFS 本题我们要开两个标记数组 flag数组是个二维数组 用于标记某两只队伍是否进行过比赛了 另一是一维数组vis 用于标记某只队伍是否比过赛 两个数组的作用范围不同 vis数组只在每一行中有效 每到下一行时 vis
  • freeimage例子资料整理

    关于freeimage的一些实例代码 对学习freeimage很有帮助 about freeimage http www pudn com downloads169 sourcecode graph texture mapping deta
  • Kettle中“排序记录”的使用

    排序记录 作用很简单 就是对字段进行排序 一般很都是配合 去除重复记录 和 记录集连接 使用的 这里就简单介绍下排序记录的使用 核心对象 gt 转换 gt 排序记录 将 排序记录 拖拽到转换页面 配置参数 选择排序字段 data2 然后选择
  • HTML特殊字符符号大全

    HTML常用特殊字符 只要你认识了 HTML 标记 你便会知道特殊字符的用处 HTML 原代码 显示结果 描述 lt lt 小于号或显示标记 gt gt 大于号或显示标记 amp 可用于显示其它特殊字符 quot 引号 reg 已注册 co
  • C++ day2

    https note youdao com s BGiSQ9uwhttps note youdao com s BGiSQ9uw 封装一个结构体 结构体中包含一个私有数组 用来存放学生的成绩 包含一个私有变量 用来记录学生个数 提供一个公有