C++学习笔记05-补充知识点(问题-解答自查版)

C++ 知识补充 向量(vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。 阅读详情

前言

以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点

Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。

本文对读者可以用作自查,答案在后面,需要时自行对照。


问题集

Q15:C++中,float a = 5.5; 语句创建的变量a是float型还是double型?如何指定float?

Q16:bool型变量在class中的大小是1bit还是1byte?为什么?

Q17:#pragma once 和 #ifndef 比起来,有没有不好处?

Q18:#include中,尖括号和""的区别?

Q19:关于VS调试,这个黄色箭头在这里的时候,是否执行这一句了?

Q20:如何理解 “实际上没有什么else if语句”?

Q21:bool型变量可以存储bool表达式吗?

Q22:引用到底是不是变量?

Q23:static变量其实只区分两种,是哪两种?

Q24:为什么不要用global全局变量?

Q25:这个类内Static变量定义,有什么问题没有?(一定要注意)

class MyEntitywithOneStaticProp{
public:
    static int x,y;    //声明

};
int MyEntitywithOneStaticProp::x = 1;    //定义
int MyEntitywithOneStaticProp::y = 2;    //定义:绑定了一个分配过的变量

Q26:解释一下类内静态函数为什么不能调用类的普通成员变量?

Q27:说函数体内和体外的static变量没有很大不同,为什么?

Q28:C++中的枚举,如何限定其使用的整形数类型?

Q29:比较好的访问数组元素个数的方式

Q30:这段代码有什么问题?(注意传字符串进函数会如何)

Q31:入参有const,指针或引用,我们在调用GetX()方法的时候,为什么有时候会报错?

Q32:为什么说对类内方法进行列表初始化,而不是从方法中赋值,可以提升性能?

Q33:两种初始化的区别——是不是一个返回指针,一个返回对象本身?

Q34:offset含义?


参考解答

Q15:C++中,float a = 5.5; 语句创建的变量a是float型还是double型?如何指定float?

A15:默认可能是float(4字节),也可能是double(8字节),这个取决于编译器设置。

像cherno的环境下出来就是double,而我是float。

指定float的方法:float a = 5.5f

Q16:bool型变量在class中的大小是1bit还是1byte?为什么?

A16:1byte,即1字节。

Q17:#pragma once 和 #ifndef 比起来,有没有不好处?

A17:这俩东西基本等效,而 #pragma once 是一种后来支持的比较新的格式,基本所有的IDE都会支持他

所以 #pragma once 就足够了,确保 .h 文件不被重复定义

Q18:#include中,尖括号和""的区别?

        < >只包含编译器当前目录," "可以是相对路径:

        #include"../lib/tree.h"

Q19:关于VS调试,这个黄色箭头在这里的时候,是否执行完这一句了?

A19:没有,还在这里,处于将要执行的状态。

Q20:如何理解 “实际上没有什么else if语句”?

A20:else if 实际上是两个语句放在了一起

Q21:bool型变量可以存储bool表达式吗?

A21:我们可以 bool result = 1 < 2;   但是要注意这只不过是计算结果。

        bool 型变量不能直接存储表达式本身,它只能存储表达式计算后的结果。

        如果需要存储表达式本身,可以使用字符串或者其他数据结构来表示表达式。

Q22:引用到底是不是变量?

A22:cherno认为不是变量,至少不是新变量。

        事实上,它的机制意在为已存在的变量提供了另一个名字,本身没有自己的存储空间,只是所引用变量的一个别名。通常用于函数参数传递,以允许函数修改实际的参数值,或者用于简化代码,使代码更加清晰。

Q23:static变量其实只区分两种,是哪两种?

A23:类内static和类外static

在C++中,static 关键字有几种不同的用法,每种用法都有其特定的意义和用途:

1、函数内部静态变量:

        在函数内部使用static关键字声明的变量,其生命周期贯穿整个程序,而不是仅限于函数调用期间。这意味着即使函数调用结束,静态变量的值也会保持不变,直到程序结束。用途:尤其是在需要跨函数调用保持状态但又不希望使用全局变量的情况下。

void function() {
    static int count = 0; // 静态变量
    count++;
    std::cout << "Count: " << count << std::endl;
}

        每次调用function()时,count的值都会递增,并且保持之前的值。

2、静态成员变量:

        类中的静态成员变量属于类本身,而不是类的任何特定实例。这意味着所有类的实例共享同一个静态成员变量。

        用途:共享数据,多个对象需要共享同一份数据时,静态成员变量可以作为一个中央存储点。eg:配置信息,实例数量计数器

class MyClass {
public:
    static int value; // 静态成员变量
};

int MyClass::value = 0; // 定义和初始化静态成员变量

        任何MyClass的实例都可以访问和修改value,但value是共享的。

3、静态成员函数:

        类中的静态成员函数可以被类本身调用,而不需要类的实例。它们不能访问非静态成员变量,因为它们与类的任何特定实例无关。

class MyClass {
public:
    static void staticFunction() {
        std::cout << "This is a static function." << std::endl;
    }
};

MyClass::staticFunction(); // 直接通过类名调用静态成员函数

4、静态全局变量与静态全局函数:

        在文件作用域中声明的静态变量,其作用域限制在该文件内,不会被其他文件访问。

        static的含义:防止跨翻译单元的链接,避免用全局变量,其设计思想有点类似于class中的private

Q24:为什么不要用global全局变量?

A24:项目一旦大起来,全局变量就是灾难

Q25:这个类内Static变量定义,有什么问题没有?(一定要注意)

class MyEntitywithOneStaticProp{
public:
    static int x,y;

};

A25:这不是定义,这只不过是声明,完整的做法如下 :

class MyEntitywithOneStaticProp{
public:
    static int x,y;    //声明

};
int MyEntitywithOneStaticProp::x = 1;    //定义
int MyEntitywithOneStaticProp::y = 2;    //定义:绑定了一个分配过的变量

Q26:解释一下类内静态函数为什么不能调用类的普通成员变量?

A26:结合A25,类内static函数在class外定义的时候,就明白为什么不能调用x和y了,作用域之内没有普通成员变量的来源,没法知道他们是什么。

Q27:说函数体内和体外的static变量没有很大不同,为什么?

下面两个有什么区别?

A27:区别不大,只不过二者的作用域不同而已

        第一个作用域在函数内

        第二个作用于在当前文件

        两者都可以在整个程序中拥有全声明周期,为此的另一个例子如下,构造一个单例模式的有效引用(而不是运行后释放)

Q28:C++中的枚举,如何限定其使用的整形数类型?

A28:

enum e_Types : unsigned char{  //这里指定了类型是uchar,只占用8bit整型数,无需使用32位int
    A,B,C, D=6        //ABC自动等于123,而D是编程者指定的数值
};
// 调用
e_Types eval = A;
e_Types eval = 6;    // 注意,这种情况是不被允许的,失去了enum设计的初衷,会直接报错

Q29:比较好的查询数组元素个数的方式?(提示:不要通过元素内容、找结束符等方式去数)

A29:

Q30:这段代码有什么问题?(注意传字符串进函数会如何)

A30:执行了一次拷贝。而这个对于仅仅是打印的功能来讲,有点太损失性能了

正确的做法是传递一个常量引用,避免拷贝的同时确保不会修改到他。

Q31:入参有const,指针或引用,我们在调用GetX()方法的时候,为什么有时候会报错?

A31:const entity& e是一个常对象,要保证这个常对象不能被改变,因此调用的必须是常函数

注意:常对象只能调用常函数是必须的,如果有需要在常函数中执行成员属性的变化,可以对属性施加mutable

Q32:为什么说对类内方法进行列表初始化,可以提升性能

A32:

Q33:两种初始化的区别是不是一个返回指针,一个返回对象本身?

A33

Q34:这段代码中,offset的含义?

A34:获得内存中某个属性相对于初始地址的偏移量

数据结构c语言版严蔚敏第二版课后答案 数据结构c语言版第二版课后答案严蔚敏 1.自学编程,难免思路阻塞,收集更新了严蔚敏,吴伟民版《数据结构-C语言版》各章节的课本源码和配套习题集答案解析,目的是为了整理数据结构中的知识点,并与网友交流意见,集思广益,共同进步。这里是所有的源码和课后习题实现目录: 这些源码和答案还有 数据结构 严蔚敏(c语言)第二版PDF书籍 下载地址在文章最下方: 02.本源码与解析涵盖了《数据结构》课本和习题集... 阅读详情

相关推荐

Openjudge 题解01~05 C++

01.这里写链接内容 代码:#include<iostream> using namespace std; int main() { cout<<"Hello, World!"<<endl; return 0; } 02.这里写链接内容 代码:#include<iostream> #include<cstdio> using namespace std; int main() {

Sky of war's Blog 832

C++学习笔记05-偏八股向知识(问题-解答自查版)

A1:可以。头文件 <climits> 定义了符号常亮:例如:INT_MAX表示 int 的最大值,INT_MIN表示 int 的最小值。INT_MAX的值是由编译器和平台的整数大小决定的,而不是由 C++ 标准直接规定。C++ 标准只规定了int类型必须至少有 16 位,但是大多数现代编译器都使用 32 位的int类型。return 0;Q2:以下写法哪个有问题?顶层指针和底层指针?

一枚菜菜子的充电站 1135

【C++软件调试技术】C++软件开发维护过程中典型软件异常问题的排查与总结

本文以问答的方式进行展开,罗列了C++软件日常开发和维护中遇到的多个软件调试问题及有代表性的场景,给出详细的处置思路和处理办法,以供大家借鉴和参考。

dvlinker的技术专栏 17万+

c++语言程序设计+txt,C++语言程序设计(第4版)学生用书

C++语言程序设计(第4版)学生用书 下载 mobi epub pdf☆☆☆☆☆郑莉,董渊 著下载链接在页面底部发表于2021-05-17类似图书 点击查看全场最低价图书介绍出版社: 清华大学出版社ISBN:9787302253525版次:4商品编码:11997584包装:平装丛书名: “十二五”普通高等教育本科国家级规划教材 , ,开本:16开出版时间:2011-06-01用纸:胶版纸页数:22...

weixin_39868663的博客 933

《raft》1.05版Windows平台安装与生存指南

Raft》是一款以海上生存为主题的游戏,玩家需要在一个不断漂移的木筏上寻找资源,建设庇护所,并抵御自然的挑战和海上生物的威胁。游戏的挑战在于资源的有限性和环境的不确定性,需要玩家进行巧妙的规划和风险管理。在《Raft》中,玩家的智慧和创造力将受到极大的考验,从而带来不同于传统生存游戏的独特体验。市面上有许多流行的解压软件,比如WinRAR、7-Zip等。这些软件能够处理多种压缩格式,例如RAR、ZIP等常见格式。下面简要介绍这两款软件的特点:WinRAR。

weixin_35006125的博客 1587

经典蓝牙HC05在Android中的应用与代码示例

HC05 是一个广泛应用的蓝牙模块,它支持蓝牙2.0协议,并且具有主从一体的功能,可以方便地与各种蓝牙设备进行通信。本章主要介绍HC05的基本操作和通信流程,为后续的Android蓝牙编程打下基础。EventBus是一个发布/订阅事件总线,适用于Android和Java。它允许组件之间的松耦合通信,这样可以简化通信代码并减少冗余。

weixin_42418754的博客 995

剑指Offer05.替换空格 c++

剑指Offer05.替换空格 写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点 1.扩容+倒序遍历+双指针 3 首先计算有多少个空格,然后对数组进行扩容,然后反向遍历原数组,判断是空格填入替换,不是的话填入原数组 class Solution { public: string replaceSpace(string s) { int l1 = s.length() - 1;//获取字符串长度 for (int i = 0; i &

y152543654的博客 305

TOEIC托业词汇汇总(完整版)

1.appointment 约会,约定2.attendance 出席人数;出席3.cabinet 橱柜4.calendar 日历;月历;行事历5.clerk 办事员,书记6.directory 人名住址薄7.duplicte 复制;副本8.filing 归档9.in-tray 待处理文件盒10.monitor 检测;监视;追踪11.out-tray 已处理文件盒12.partition 分隔;分隔物(如墙壁等)13.postage 邮费。

weixin_39676449的博客 1万+

C++ primer plus 第五章习题解答

自己看书时解答的C++  Primer  plus 第五章习题答案 5.1 #include int main() { using namespace std; int n, m, x, y,i; int t = 0; cout cin >> n; cout cin >> m; for (y = n; n > m;) { y = m; m

w_paul的博客 482

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 300

Kubernetes集群资源优化实战:Volcano调度器如何帮你省下30%GPU算力

本文详细介绍了如何通过Volcano调度器的Binpack策略优化Kubernetes集群中的GPU资源利用率,解决AI模型训练中的资源碎片化问题。通过实战配置和调优指南,帮助用户提升30%的GPU算力利用率,显著降低任务等待时间和硬件成本。

weixin_30832143的博客 506

为家长解答青少儿编程常见问题

前言:我整理了主要10个问题,预览需要8-10分钟。由于本媒体部分图片、文章来源于网络,版权归原作者所有,如有侵权,请与我联系删除! 很多家长在考虑给孩子报编程班之前肯定都会遇到很多的疑惑,我搜集了一部分常见问题,给家长们做个解答。 01.孩子为什么要学习编程? 编程学习 编程课程,是随着互联网技术和人工智能时代来临而产生的全新学科。很多家长认为,孩子以后又不一定当程序员,学编程干嘛?学习编程,...

weixin_43405101的博客 2461

Vector CANape的使用记录

开门见山,今天想和大家分享下CANape使用记录,分享原因是近日在分析一个客户现场软件问题时,需要用到CANape来实时的监测ECU中的变量,因为之前对CANape的认知比较浅薄,觉得标定工程师使用他就足够了,但是这次的经历让我觉得需要写点东西来记录自己学习并使用他的过程。 相信大家能够在网上找到很多关于如何使用CANape的文章,从新建Project到后面的数据的观测、保存以及回放等等。我个人也是这么学过来的,所以我不打算从那些方面着手去描述如何使用她,而是根据我的真实使用过程以及问题的抛出到如何解决来

2万+

Cpp入门引言(0)

哈!这是第一篇C++的有关内容,就来介绍一下C++的历史和一些我的看法吧不如先来看看我们的祖师爷Bjarne Stroustrup吧!C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object面向对象)思想,支持面向对象的程序设计语言应运而生。什么是面向对象?为什么C语言不太行?没事,你先这样记着,之后会慢慢讲解。

tan180°的博客 1694

从M350 RTK到E-Port:解锁大疆无人机多负载协同与PSDK V3开发新范式

本文深入解析了大疆M350 RTK无人机搭载的E-Port智能接口与全新的PSDK V3开发套件,如何共同实现多负载协同作业的范式转变。E-Port集成了供电与高速数据总线,而PSDK V3通过统一的设备模型与服务机制,大幅降低了第三方负载的开发门槛与集成复杂度,使构建如智能巡检等复杂空中作业系统变得更加高效和标准化。

3c4x5z6v7b的博客 166

全国(山东、安徽)职业技能大赛--信息安全管理与评估大赛题目+答案讲解——windows应急响应篇

保护数据,捍卫安全,展现技能,赢得荣耀!全国职业技能大赛-信息安全与评估大赛,挑战你的技术,揭示黑客的秘密!加入我们,成为信息安全的守护者!

人若无名,便可专心练剑 906

Java基础面试题&知识点总结(上篇)

大家好,我是栗筝i,从 2022 年 10 月份开始,我便开始致力于对 Java 技术栈进行全面而细致的梳理。这一过程,不仅是对我个人学习历程的回顾和总结,更是希望能够为各位提供一份参考。因此得到了很多读者的正面反馈。而在 2023 年 10 月份开始,我将推出 Java 面试题/知识点系列内容,期望对大家有所助益,让我们一起提升。今天与您分享的,是 Java 基础知识面试题系列的总结篇(上篇),我诚挚地希望它能为您带来启发,并在您的职业生涯中起到助益作用。

栗筝i的博客 3400

手把手教你从入门到精通C# 操作MySql数据库

本文是《C#操作MySql数据库从入门到精通》专栏的导读,帮助大家知道学习本专栏能够获取什么!

qq_34059233的博客 1929

Python 核心设计理念27个问题及解答

点击上方“视学算法”,星标公众号重磅干货,第一时间送达作者:草yang年华来源:https://docs.python.org/zh-cn/3.7/faq/design....

zandaoguang的博客 1698

NVIDIA Isaac Sim 入门教程(二)

Omniverse Isaac Sim 的工作空间非常容易自定义。调整用户界面的大小、停靠、取消停靠、添加和移除面板都非常容易。进入顶部菜单栏,单击下拉菜单最下方的窗口 > 视口 > 视口 2(现在工作区中应该会出现一个名为 "视口 2 "的新视口。如果您想创建更多的视口,请按照相机检查器扩展进行操作。单击并拖动视口 2 的顶部标题以激活停靠部件。拖放到原始视口的右侧,将两个视口并排放置。单击并向左拖动视口 2 的左侧,使视口大小相等。

机器人控制与仿真应用 6544

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

KRTS常见问题解答

是的,这是可以的。在此文件夹中插入一个名为“HideInfo”的DWORD值(32位),其值为1。这样,介绍窗口一天只会出现一次,并且仅在使用开发者许可证时。在运行时安装中,介绍窗口将永远不会出现。

小易爱学习 1601

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

[Thinking in C++]C02:Ex05 解答及心得

Problem:Change Fillvector.cpp so that it prints the lines (backwards) from last to first.  问题:修改Fillvector.cpp让它可以从文章的最后一行开始到第一行打印到屏幕。我的解答://: C02:Fillvector.cpp// Copy an entire file into a vec

matrixdwy的专栏 574

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C++ primer plus(第六版)学习笔记、习题答案(4)

买了一本刘未鹏的的《暗时间》,如获至宝,我知道我浪费了太多的时间,看了他的一篇讲招聘的博客,知道自己今后要如何做,要看那些书了,其实看完他们的人生历程,他们的博客后,突然感觉自己在这里小打小闹,些不出什么新奇的东西,但我得做个有始有终的人吧,还是坚持把C++primer plus的读书笔记和习题答案写完吧,大牛都是从这样开始的吧,也完成自己刚刚买这本书后在心底暗下的决心吧? 第五章:循环和关系表

最需要奋斗的这几年 733

【C++题解】剑指offer第二版,面试必备专栏

📚专栏目标:剑指offer系列题解📣专栏定位:为找工作的小伙伴整理常考算法题解,祝大家都能成功上岸!🎏唠叨唠叨:在这个专栏里,我会整理所有剑指 offer 第二版的题解,这里面的思路也参考了各个大佬。一方面我希望通过这个专栏加深我对于剑指 offer 题目的理解,另一方面也想将所有题目整合在一起方便大家参考。

Newin2020的博客 2252

2015年4月第六届蓝桥杯c/c++B组省赛试题和个人解答

又一年的蓝桥杯,好久没那么爽快的做题了,昨天上午刚考完蓝桥杯,我把题带出来了。不废话,上题。      一、 奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最

Void main with out return 8498

《C++ Primer》未理解知识点备忘

本博文记录阅读《C++ Primer》过程中遇到的未理解知识点,便于日后回头有针对性的攻克。 教材:《C++ Primer中文第四版(非扫描)》 1.第369页有这么一句“。 正如前面第 7.8 节所提到的,当形参以副本传递时,不能基于形参是否为 const 来实现重载。” 提示:可以下去7.8节去了解一下 次日即2013-03-31问题解决详细: 理解了下面这段代码,就理解了上面这个问...

weixin_30399055的博客 118
上一篇: 一个自己写着玩的英雄联盟(LoL)极地大乱斗ahk自动脚本,还挺好用的,已开源
下一篇: 点赞收藏测试文章(让我看看有多少机器人在刷互动量)
睡不醒的小泽
博客等级 码龄11年 1426粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值