C++
郊眠寺山雀
王晓峰的博客 你其实没那么努力 你永远可以做得更好——平时的一些笔记和心情
展开
-
C++学习笔记(面向对象部分开始6500字复习总结)
读取一个类型的虚函数表需要将类的类型转换为指针类型,此处感悟,程序中数据的运算形式(即运算符的操作形式)是由该变量的类型决定,int也可以看做一个变量,它是定义int类的那一块空间的地址,将int转换为void *,就可以访问int类定义的地址了,类比自定义的类结构,访问类定义的地址后,前8个字节就是虚函数表的首地址,再对首地址进行遍历函数接口,就可以输出所有的函数了。《个人理解》当需要调用拷贝构造时,就一直往前传递this地址指针,省掉中间的拷贝构造,直接让对应接口的构造函数在目标对象的地址上进行构造。原创 2022-11-21 02:17:09 · 412 阅读 · 0 评论 -
C++右值引用是一个左值引发的思考
提出问题:在进行vector的封装时,突然疑惑,为什么右值引用的形参,却是一个左值,而且还要把再次它转换成右值才能作为右值使用,此前写移动构造也使用右值引用,但没有对右值引用调用move()函数的操作,对右值引用调用move()函数变为右值,这听起来就很奇怪。1.将右值直接转换为左值,在C++里,通常产生了右值以后,必须将右值拷贝到一个左值才能保存,但这个拷贝如果是面对大型容器多次拷贝,会产生大量的资源损耗,而直接将右值转换为左值,则节省这些损耗,此时,将右值转换为左值的操作成为移动构造。原创 2022-11-17 23:23:38 · 902 阅读 · 1 评论 -
C++new申请指定地址的空间
http://t.csdn.cn/Zz6KE转载 2022-11-17 21:58:06 · 421 阅读 · 0 评论 -
new与malloc的区别
另外:动态申请内存时,返回的指针存在栈段中,申请连续内存时,栈段中保存的只是堆段中申请的空间的地址表,在heap中申请一个a,然后把a的地址返回到栈段中保存在一个指针变量里。原创 2022-11-12 22:01:38 · 69 阅读 · 0 评论 -
c++转换构造与隐式转换
非内置类型隐式转换时,也会遵守c++隐式转换规则,小空间转大空间,隐式构造一个对象用于存放需要转换的对象,这个对象叫做匿名对象,此时会调用对应接口的构造函数,比如要接住一个整型,就会调用整型的转换构造函数。隐式转换成匿名对象后,要把该对象赋给目标对象,此时只能调用重载的赋值运算符,因为默认的赋值运算符只能被内置类型使用。c++寻找参数使用就近原则,作用域内从内向外找。c++隐式转换,小空间转大空间,数据不丢失。转换构造,利用构造函数进行类型的转换。可联想内置类型的设计。原创 2022-11-12 01:16:54 · 351 阅读 · 0 评论 -
常量引用的意义,对常量引用进行修改
其实,常量引用在绑定时,绑定的并不是对象本身,而是一个临时量/右值/临时空间,然后这块临时空间进行强制类型转换成常量引用的类型,再与其绑定,这么一看,好像也没有打破引用的规范,因为类型依然是一致的,只是像很多c++语法一样,有一些我们看不到的隐性操作。c++ primer 对常量引用的讲解非常好,首先常量引用本身只是一个简称,因为引用并不是一个变量,所以根本不存在常量的引用,而只是对const的引用,当然,如果熟知就好。可以保存一个禁止任何人修改,代码层面又和预编译一样方便修改,常量引用真的不能被修改?原创 2022-11-05 13:16:20 · 458 阅读 · 0 评论 -
构造与析构(伪构造的意义)
先构造后析构:因为先构造的对象会被后构造的对象所使用,如果将先构造的对象析构,再析构使用了先构造对象的对象时,会访问错误,人话讲就是,你构造的时候用了我当工具,如果先把我这个工具拆了,拆你的时候就找不到我这个工具了,不过这个是C++自己会遵守的条款,此处帮助理解。伪构造:在工程应用中,申请大片空间最好不要在构造函数中进行,因为如果申请空间出错,异常捕捉无法捕捉到构造函数中的异常,所以申请大量空间的任务应该在类里另外单独写出,称为“伪构造函数”。构造函数传参使用初值列,构造顺序只取决于内部成员的构造顺序。原创 2022-11-05 12:24:47 · 165 阅读 · 0 评论 -
C++条款笔记
c到c++原创 2022-11-03 10:44:27 · 51 阅读 · 0 评论 -
从汇编看语法糖(C++引用)和指针的区别
c++引用原创 2022-11-03 10:42:32 · 252 阅读 · 0 评论 -
STL的简单了解
STL并非全是标准库,比如string,但也约定俗成为标准库六大部件:算法 容器 适配器 迭代器 仿函数 分配器string :字符串, 可与字符串直接相加进行拼接,查找(find), 插入(insert),截取(substr),替换(replace)vector :动态数组,扩容大小取决于编译器stack :栈,基于双端队列的适配器,压入弹出判空栈顶queue:队列,基于双端队列的适配器,压入弹出头尾判空deque:双端队列, 内存空间并非连续,但是所有单位...原创 2021-10-28 22:09:05 · 122 阅读 · 0 评论