- 博客(21)
- 收藏
- 关注
原创 C++ lambda表达式
捕获列表含义能否访问外部变量对外部变量的影响[]空捕获不能访问任何外部变量无(不涉及外部变量)[=]按值捕获所有能访问,使用的是变量的副本内部修改副本不影响外部原始变量。
2025-10-20 16:09:38
950
原创 QT中的std::to_string()和std::to_wstring()
【代码】QT中的std::to_string()和std::to_wstring()
2025-07-09 11:33:01
114
原创 sprintf函数
使用示例代码出现C4996报错,如下:添加宏_CRT_SECURE_NO_WARNINGS,仍报错。替换为安全的函数Sprintf_s后不报错。
2025-06-05 10:37:53
251
原创 C++之运算符重载
4.1 和重载拷贝构造函数同理,如果类的属性有指针,有new新的内存空间,那么为了避免浅拷贝带来的内存重复释放问题,需要重载赋值运算符。2.2 ostream对象只能有一个,所以要 ostream& cout。6.1 函数调用运算符就是(),operator(),也称仿函数。2.4 如果属性是私有的,可以将左移运算符重载函数声明为友元。4.2 返回类型是Person &,实现链式编程。2.1 只能用全局函数实现左移运算符重载。3.2 前置++返回引用,后置++返回值。6.函数调用运算符重载。
2025-02-23 23:46:16
295
原创 C++之深拷贝与浅拷贝
编译器提供的拷贝构造函数是浅拷贝,如果成员属性有指针类型,拷贝构造函数中简单地把指针的值复制了,即两个指针指向同一个内存空间,析构的时候就会重复delete同一块内存!所以,如果成员属性有指针类型,要自定义拷贝构造函数,要手动new新内存,使新指针指向新内存。
2025-02-19 23:05:53
195
原创 C++之构造函数、析构函数
4.3如果你自定义了拷贝构造函数,没有自定义默认构造函数,那么编译器既不提供拷贝构造函数,也不提供默认构造函数。体现为 Person p;会报错,没有无参构造函数。4.2如果你自定义了默认构造函数或者有参构造函数,那么编译器就不提供默认构造函数,但是会提供拷贝构造函数。4.1编译器会提供默认构造函数、拷贝构造函数、析构函数。4.编译器提供默认构造函数、拷贝构造函数的规则。3.拷贝构造函数的调用时机。1.默认构造函数的调用。2.构造函数的三种调用。
2025-02-19 22:46:12
270
原创 C++之引用
1.引用的本质是指针常量,所以引用不可以修改(指针的值不可以修改),引用的值可以修改(指针指向的内存空间的值可以修改)。2.不要返回局部变量的引用,除非是static局部变量。3.如果函数返回引用,那么这个函数调用可以作为左值。
2025-02-13 23:28:31
162
原创 栈的扩容.
这行代码只是简单地让 newArray指针指向了 _array所指向的内存地址,而并没有将 _array中的元素复制到 newArray所指向的新内存空间中。此时,newArray和 _array指向的是同一块内存,后续对 newArray的操作实际上就是对 _array的操作。而后续_array指向的内存被delete了。扩容时 需要将旧数组的数据复制到新数组。
2025-02-13 09:19:30
242
原创 C++手写String类 体会拷贝构造函数
5.默认拷贝构造函数是浅拷贝。如果把str赋值给str2,两个m_Buffer指向同一块内存,析构时却delete两次,程序会崩溃。所以要重载拷贝构造函数,在里面new新内存进行深拷贝。注释掉自己写的默认拷贝函数就可以看到效果了。tip:函数的值传递,也会进行复制。尽量使用“const 引用”,printFunc(const String& str)。减少复制,程序更快。1.[m_Size + 1],不要忘记字符串的结尾‘\n’.4.有new就要有delete!3.friend 声明。
2024-10-23 23:21:52
200
1
原创 C++计时之测试代码片段运行时间小技巧
std::chrono是C++11引入的日期时间处理库,其中包含3种时钟类:system_clock(系统时钟),steady_clock(稳定时钟),high_resolution_clock(高精度时钟);https://blog.youkuaiyun.com/weixin_42322256/article/details/124060870文章提到。在测试函数里面构造一个Timer对象,调用测试函数,这样就可以自动计时!所谓时钟,是指从一个时点开始,按照某个刻度的一个计数;计时小技巧之测试代码片段运行时间!
2024-10-23 00:34:30
495
原创 C++重载箭头操作符
2.ScopedPtr类的构造函数和析构函数(ScopedPtr析构时对实际对象进行自动删除)番外知识点:利用箭头操作符获取成员变量的偏移量(就是内存对齐的偏移量)看cherno的c++ 第46集。1.指针与解引用,点跟箭头的使用。
2024-10-22 23:23:07
173
原创 C++隐式转换和explicit关键字
/那么 Entity b = 22;这个写法就会报错,要写成Entity a(22);//可以这样写的原因是 进行了隐式转换(/隐式构造函数),隐式地将转换成一个Entity。//报错:不存在从“从const char [7]到Entity的适当构造函数”,//在构造函数前加上explicit,意为禁用隐式转换,必须显式地调用构造函数。//因为“cherno”是char[],而不是string,需要转换2次。
2024-10-22 22:50:09
435
原创 std::vector使用优化
push第二个元素时,申请新内存,容量为2,把原本的第一个元素copy到新内存(打印1次)并且插入第二个元素(main栈帧copy到verctor[1],打印1次copy)。到这里就会显示3个"copy"。vector可以动态分配内存,申请的旧内存用完时,会申请更大的新内存,把旧内存的内容copy到新内存,再释放旧内存。原本的内存容量是1,push第一个元素时,打印copy1次(这里的copy是从main栈帧拷贝到vector)。push2个元素时,打印copy3次,push3个元素时,打印copy6次!
2024-10-21 22:35:04
823
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅