归档
善良比聪明更重要
09
28
C++成员修饰const和mutable C++成员修饰const和mutable
const:常量,不变的mutable:易变的从意思上理解,可见const和mutable是一对反义词,它们都是C++的关键字。const成员函数不能修改调用它的对象。类的成员函数可以被声明为const,这将使得函数的隐式参数this将被作
2024-09-28
25
使用++i还是i++ 使用++i还是i++
我们经常使用for循环来遍历东西,循环变量可以前自增也可以后自增,发现对遍历结果没啥影响,但是该如何选择呢?我们应该尽量使用前自增运算符而不是后自增运算符,即用 ++Iter代替Iter++。为什么要这么做,有什么有实际价值?下面我会详细解
2024-09-25
23
C++面试题 C++面试题
1.char c = '\72'; 中的\72代表一个字符,72是八进制数,代表ASCII码字符:。2.10*a++中a先进行乘法运算再自增。3.const和static的作用static关键字:1)函数体内static变量
2024-09-23
08
C++细说sizeof C++细说sizeof
摘要:sizeof的作用非常简单:求对象或者类型的大小。然而sizeof又非常复杂,它涉及到很多特殊情况,本篇把这些情况分门别类,总结出了sizeof的9个特性:(1)sizeof不能求得void类型的长度;(2)sizeof能求得void
2024-09-08
08
C++中new与malloc区别 C++中new与malloc区别
申请的内存所在位置new操作符从自由存储区上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操
2024-09-08
04
C++ 流缓冲区 C++ 流缓冲区
C++ 的 I/O 是通过标准库中输入输出流来实现的。标准库在 iostream头文件当中,预定义了六个流对象,他们是: • istream <- std::cin/std::wcin,对应标准输入的输入流; • ostream &l
2024-09-04
03
C++命令行参数 C++命令行参数
前言我们在Linux用到的命令常常支持很多参数,那么如何写一个程序,也像Linux命令一样支持很多参数呢?有什么什么优雅的处理方法? 命令行参数在介绍如何处理命令行参数之前,简单介绍一下命令行参数,已经了解的朋友可以跳过此小节。我们用一段代
2024-09-03
03
std::ref std::ref
C++本身有引用&,为什么C++11又引入了std::ref?主要是考虑函数式编程如std::bind在使用时,是对参数直接拷贝,而不是引用。如下例子: void f(int& n1, int& n2, const
2024-09-03
03
friend friend
原则上, 类的私有(private)和受保护(protected)成员不能从声明它们的同一类外部访问。但是, 此规则不适用于友元 “friends”。以friend关键字修饰的函数或类称为友元函数或友元类。 友元函数友元函数是可以直接访问类
2024-09-03
03
拷贝构造函数与赋值函数 拷贝构造函数与赋值函数
在进行C++类编写的过程之中,通常会涉及到类的拷贝构造函数与类的赋值函数。初涉类编写的代码,对于两类函数的用法一直是挺让人困惑的内容。这篇文章我们会详细来梳理拷贝构造函数与赋值函数的区别。 调用了哪个函数?上述两种函数的使用和C++之中类的
2024-09-03
02
智能指针 智能指针
上周五排查了一个由于XXX模块操作疏忽导致栈越界引发的我的模块的智能指针Crash问题,因此稍微研究了一下,以作参考:shared_ptr共享被管理对象,同一时刻可以有多个shared_ptr拥有对象的所有权,当最后一个shared_ptr
2024-09-02