C++笔试强训7

news2024/9/19 19:05:58

文章目录

  • 一、选择题
    • 1-5题
    • 6-10题
  • 二、编程题
    • 题目一
    • 题目二


一、选择题

1-5题

在这里插入图片描述
基础知识,函数代码少,频繁调用的时候才适合定义内联函数。
故选C。

在C++中,inline关键字是用来向编译器建议将函数体在每个调用点“内联展开”的。这意味着编译器会尝试将函数的代码直接插入到每个调用该函数的地方,而不是像通常那样进行函数调用(即,生成调用指令,跳转到函数代码,执行函数体,然后返回)。内联函数可以减少函数调用的开销,尤其是对于那些体积小、调用频繁的函数来说非常有用。然而,是否真正内联一个函数是由编译器决定的,编译器会基于多种因素(如函数体大小、优化级别、是否有递归调用等)来决定是否进行内联。

以下是一些适合使用inline定义内联函数的场景:

  1. 小型函数:函数体很小,只有几行代码。这些函数通常执行简单的操作,如计算或访问数据成员。

  2. 频繁调用的函数:如果函数在程序中频繁被调用,那么内联这些函数可以减少调用开销,提高程序的执行效率。

  3. 模板函数:模板函数通常因为模板实例化而产生大量的函数副本,这些副本往往很小且相似。将它们声明为内联可以减少代码膨胀。

  4. 不会引起副作用的函数:内联函数应该避免修改全局变量或执行其他会影响程序状态的操作,因为内联展开可能会使这些副作用在多个地方发生,导致程序行为难以预测。

  5. 类的成员函数:尤其是访问器(getter)和修改器(setter)函数,这些函数通常很简短,并且频繁被调用。将它们定义为内联可以提高效率。


在这里插入图片描述
函数参数默认值又叫缺省参数,缺省参数必须从右向左开始缺省,必须连续给定缺省值,也就是说,从左到右,一旦遇到一个参数是缺省的,那么之后的参数也必须都是缺省的。
函数参数不是必须设定默认值,可设可不设。

故选D


在这里插入图片描述

类成员的缺省访问权限是私有的private,B错;
数据成员不是必须声明为私有的,C错;
成员函数类内类外定义都行,D错;
故选A


在这里插入图片描述
aa是4,bb是5,a=aa–后,a是4,aa是3,b=abb后b=45=20
故a是4b是20
故选D


在这里插入图片描述
构造函数没有返回类型,构造函数函数名必须和类名相同,构造函数可以带参数,带参数的和不带的可以构成函数重载。
构造函数可以用private修饰
故选C


6-10题

在这里插入图片描述
const修饰的变量和引用类型必须利用初始化列表赋值,static const可以在类外初始化。故选B。

初始化列表位置才是真正的初始化,构造函数体中只是赋值
初始化列表中:只能对类中非静态的成员变量来进行初始化

那些成员必须在初始化列表的位置初始化:
1.const修饰的成员变量
2.引用类型的成员变量
3.类类型对象,该类没有默认的构造函数


在这里插入图片描述
如果将运算符符重载成类的成员函数,形参个数要比该运算符需要的参数个数少1
因为:成员函数具有隐藏的this指针

B选项 如果类中具有单个参数的构造函数,该构造函数具有类型转换的作用,可以用explicit来禁止这种隐式类型转换。
b1 + 3 编译器在编译代码节点,会调用单参构造函数将3转换为BigNumber的对象

C选项,没啥问题,符合重载的作用

D,因为+是双目运算符,所以重载+时第一个参数是隐藏的this指针,所以+左边必须是一个对象,D错。

故选D。


在这里插入图片描述
描述错误的是 D:友元函数是有关键字friend修饰,调用的时候也是通过指针this调用的。

解析:

A. 正确。友元函数是定义在类外部,但在类内部通过friend关键字声明,因此它可以被本类和友元类(或函数)的对象调用。

B. 正确。友元函数和类的成员函数都可以访问类的私有成员变量或成员函数。友元函数通过friend声明获得对类私有成员的访问权限,而成员函数则自然地拥有这种权限。

C. 正确。类的成员函数是属于类的,它们通过隐含的this指针来访问类的成员变量和成员函数。这个this指针指向调用成员函数的对象。

D. 错误。友元函数虽然通过friend关键字声明,但它不是类的成员函数,因此它不能通过this指针来调用。友元函数是在类外部定义的普通函数,它只能通过传入的参数(如果有的话)来访问类的成员,或者通过类的对象显式地访问(如果该函数设计为接受类的对象作为参数)。this指针是类成员函数特有的,用于指向调用该函数的对象。友元函数并不具备这种特性。


在这里插入图片描述
p是指针变量,在栈上,p指向的内存即new出来的在堆上,故选C。

对这块不太清楚的可以点下面的超链接去看看我的另一篇文章。
内存管理


在这里插入图片描述
选A。


二、编程题

题目一

题目链接:

Fibonacci数列
在这里插入图片描述

提交代码:

#include <iostream>
using namespace std;

int main() {
    int num;
    cin >> num;
    int f1 = 0, f2 = 1;
    while (true) {
        if (num < f2) {
            break;
        }
        int tmp = 0;
        tmp = f2;
        f2 = f1 + f2;
        f1 = tmp;
    }
    cout << min(f2 - num, num - f1);
}
// 64 位输出请用 printf("%lld")

运行结果:
在这里插入图片描述


题目二

题目链接:

合法括号序列判断
在这里插入图片描述

提交代码:

class Parenthesis {
  public:
    bool chkParenthesis(string A, int n) {
        stack<char> s;
        for (int i = 0; i < n; i++) {
            if (A[i] == '(') {
                s.push(A[i]);
            } else if (A[i] == ')' && !s.empty()) {
                s.pop();
            } else return false;
        }

        return s.empty();
    }
};

运行结果:
在这里插入图片描述


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

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

相关文章

意得辑润色极致优惠方案

祝审稿人们编辑们及他们全家工作顺利身体健康万事如意心想事成&#x1f647;&#x1f3fb;&#x1f647;&#x1f3fb;&#x1f647;&#x1f3fb; 好人一生平安&#x1f64f;&#x1f3fb;&#x1f64f;&#x1f3fb;&#x1f64f;&#x1f3fb; #accept

探索 io_uring:理解高效异步 IO 的工作原理与实现细节

概述 io_uring 是一个 Linux 内核提供的高性能异步 I/O 框架&#xff0c;最初在 Linux 5.1 版本中引入。它的设计目标是解决传统的异步 I/O 模型&#xff08;如 epoll 或者 POSIX AIO&#xff09;在大规模 I/O 操作中效率不高的问题。 关键特点和优势包括&#xff1a; 零拷贝…

驱动框架——CMSIS第一部分 RTE驱动框架介绍

一、介绍CMISIS 什么是CMSIS&#xff08;cortex microcontrol software interface standard一种软件标准接口&#xff09;&#xff0c;官网地址&#xff1a;https://arm-software.github.io/CMSIS_6/latest/General/index.html 包含的core、driver、RTOS、dsp、nn等部分&…

【C++】位运算:消失的两个数字

1.题目 2.算法思路 众所周知&#xff1a;相同的两个数字异或在一起等于0&#xff0c;而异或运算又遵循交换律和结合律。 所以这道题目的思路就有了&#xff1a; 1.可以将数组和1~N中的所有整数全部异或在一起&#xff0c;就可以得到缺失的两个数&#xff08;a,b&#xff09;…

使用Python创建和扫描二维码

二维码&#xff08;Quick Response code&#xff09;已成为在物理和数字领域之间架起桥梁的多功能工具。从分享联系信息和网站链接到促进支付和跟踪库存&#xff0c;二维码在各个行业中找到了应用。通过利用Python的功能&#xff0c;用户可以自动化生成个性化的二维码&#xff…

基于SpringBoot+Vue的财务管理系统(带1w+文档)

基于SpringBootVue的财务管理系统(带1w文档) 基于SpringBootVue的财务管理系统(带1w文档) 财务管理系统的开发运用java技术、springboot框架&#xff0c;MIS的总体思想&#xff0c;以及Mysql等技术的支持下共同完成了该系统的开发&#xff0c;实现了财务管理的信息化&#xff0…

C语言函数:编程世界的魔法钥匙(2)-学习笔记

引言 注&#xff1a;由于这部分内容比较抽象&#xff0c;而小编我又是一个刚刚进入编程世界的计算机小白&#xff0c;所以我的介绍可能会有点让人啼笑皆非。希望大家多多包涵&#xff01;万分感谢&#xff01;待到小编我学有所成&#xff0c;一定会把这块知识点重新介绍一遍&a…

VB利用API调用系统的通用颜色对话框

Option Explicit 在窗体上添加一个Command1按钮控件 Private Type ChooseColor lStructSize As Long hwndOwner As Long hInstance As Long rgbResult As Long lpCustColors As String Flags As Long lCustData As Long lpfnHook As Long lpTemplateName As String End Type 该…

pcie拓扑结构与层次结构

一 拓扑结构 PCIE 总线与总线共享式通讯方式的 PCI 不同&#xff0c;PCIE 由点到点的链路组成&#xff0c;并采用树形拓扑结构PCIE 拓扑结构体系由 CPU、根复合体&#xff08;RootComplex&#xff0c;RC&#xff09;、端点设备&#xff08;Endpoint&#xff0c;EP&#xff09;…

Python入门------pycharm加载虚拟环境

pycharm虚拟环境配置&#xff1a; 在按照前面的办法&#xff0c;配置好虚拟环境后,如果我们需要到虚拟环境开发&#xff0c;就需要给编译器配置虚拟环境 1.打开编译器&#xff0c;点击右下角的interpreter选项 2. 点击ADD Interpreter,添加虚拟环境 3. 因为我们使用的是原始…

【LeetCode】二叉树的最大深度

目录 一、题目二、解法完整代码 一、题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#x…

vue2学习笔记9 - 通过观察vue实例中的data,理解Vue中的数据代理

接着上一节&#xff0c;学一学vue中的数据代理。学vue这几天&#xff0c;最大的感受就是&#xff0c;名词众多&#xff0c;听得发懵。。不过&#xff0c;深入理解之后&#xff0c;其实说得都是一回事。 在Vue中&#xff0c;数据代理是指在实例化Vue对象时&#xff0c;将data对…

【C++高阶】精通AVL树:全面剖析与深度学习

目录 &#x1f680; 前言一&#xff1a; &#x1f525; AVL树的性质二&#xff1a; &#x1f525; AVL树节点的定义三&#xff1a; &#x1f525; AVL树的插入四&#xff1a; &#x1f525; AVL树的平衡调整&#xff08;附动图&#xff09; 五&#xff1a;&#x1f525; AVL树的…

防御保护课-防火墙接口配置实验

一、实验拓扑 &#xff08;我做实验用的图如下&#xff09; 二、实验要求 1.防火墙向下使用子接口分别对应生产区和办公区 2.所有分区设备可以ping通网关 三、实验思路 配IP&#xff1b; 划分vlan并配置vlan&#xff1b; 配置路由和安全策略。 四、实验配置 1、画图并…

C++与lua联合编程

C与lua联合编程 一、环境配置二、lua基本语法1.第一个lua和C程序2.基本数据类型和变量2.1 Nil2.2 Booleans2.3 Numbers2.4 String(最常用) 3. 字符串处理3.1 错误处理3.2 字符串长度:string.len3.3 字符串子串 :string.sub3.4 字符串查找: string.find3.5字符串替换: string.gs…

Evil-WinRM一键测试主机安全情况(KALI工具系列四十四)

目录 1、KALI LINUX 简介 2、Evil-WinRM 3、信息收集 3.1 目标IP 3.2 kali的IP 4、操作步骤 4.1 用户访问 4.2 使用哈希值 4.3 文件处理 5、总结 1、KALI LINUX 简介 Kali Linux 是一个功能强大、多才多艺的 Linux 发行版 &#xff0c;广泛用于网络安全社区。它具有全…

swiftui使用ScrollView实现左右滑动和上下滑动的效果,仿小红书页面

实现的效果如果所示&#xff0c;顶部的关注用户列表可以左右滑动&#xff0c;中间的内容区域是可以上下滚动的效果&#xff0c;点击顶部的toolbar也可以切换关注/发现/附近不同页面&#xff0c;实现翻页效果。 首页布局 这里使用了NavigationStack组件和tabViewStyle样式配置…

在项目服务器部署git 并实现自动提交

以下场景适合在服务器当中使用git 方便提交代码&#xff0c;同时不需要外部的git仓库&#xff08;码云gitee或者github作为管理平台&#xff09;。依靠服务器本身ssh 连接协议做为git提交的地址&#xff0c;同时利用钩子自动同步项目代码 首先下载git sudo apt update sudo a…

Linux最直观的性能分析(热点分析)-编译perf并生成火焰图

本文先介绍了linux下perf工具的使用场景&#xff0c;然后对命令行安装和源码编译安装两种方式做了说明&#xff0c;接下来通过最简单的perf top命令给出perf的直观印象&#xff0c;最后通过perf record生成火焰图的方式说明如何发现进程中的函数热点。 一、perf工具介绍 per…

00 JavaWeb

学习资料&#xff1a;B站视频-黑马程序员JavaWeb基础教程 文章目录 JavaWeb1、JavaWeb简介2、 JavaWeb主要内容3、JavaWeb技术栈4、JavaWeb课程安排5、Web核心课程安排 JavaWeb 1、JavaWeb简介 Web&#xff1a;全球广域网&#xff0c;也称为万维网(www)&#xff0c;能够通过浏…