随笔分类 -  C++

摘要:动态加载: 1:灵活,可以在需要的时候用LoadLibrary进行加载,在不需要的时候用FreeLibrary进行卸载,这样可以不必占用内存。 2:可以在没有dll时候发现,而不致程序报错。 3:加载程序中有条件才运行的库。 4:热更新,在不停止程序的前提下进行更新。 5:复杂一些,需要显示获得函数 阅读全文
posted @ 2019-06-05 14:19 狂奔~
摘要:List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。 Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速 阅读全文
posted @ 2019-06-05 11:09 狂奔~
摘要:什么是运算符的重载? 运算符与类结合,产生新的含义。 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义) 怎么实现运算符的重载? 方式:类的成员函数 或 友元函数(类外的普通函数) 规则:不能重载的运算符有 . 和 .* 和 ?: 和 :: 和 sizeof 友元函数 阅读全文
posted @ 2019-06-04 08:31 狂奔~
摘要:内存管理运算符 new、new[]、delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数。一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内存时才会重载。 以成员函数的形式重载 new 运算符: 以全局函数的形式重载 new 运算符: 两种 阅读全文
posted @ 2019-06-03 23:43 狂奔~
摘要:C++ 不允许变量重名,但是允许多个函数取相同的名字,只要参数表不同即可,这叫作函数的重载(读“虫载”,不读“众载”,其英文是 overload)。重载就是装载多种东西的意思,即同一个事物能完成不同功能。 函数的重载使得 C++ 程序员对完成类似功能的不同函数可以统一命名,减少了命名所花的心思。例如 阅读全文
posted @ 2019-06-03 23:05 狂奔~
摘要:多态现在一般的用法,就是拿一个父类的指针去调用子类中被重写的方法。但我搞不懂为什么要那么做,我们直接在子类中写一个同名的成员函数,从而隐藏父类的函数不就行了么? 然后有人这样回答: 将父类比喻为电脑的外设接口,子类比喻为外设,现在我有移动硬盘、U盘以及MP3,它们3个都是可以作为存储但是也各不相同。 阅读全文
posted @ 2019-06-03 22:55 狂奔~
摘要:所需头文件 %a 星期几的简写 %A 星期几的全称 %b 月份的简写 %B 月份的全称 %c 标准的日期的时间串 %C 年份的前两位数字 %d 十进制表示的每月的第几天 %D 月/天/年 %e 在两字符域中,十进制表示的每月的第几天 %F 年-月-日 %g 年份的后两位数字,使用基于周的年 %G 年 阅读全文
posted @ 2019-05-14 11:42 狂奔~
摘要:1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r如果你把#define语句 阅读全文
posted @ 2019-05-12 17:33 狂奔~
摘要:大小端模式 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这 阅读全文
posted @ 2019-05-12 15:52 狂奔~
摘要:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。 百盒测试:已知产品内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否要经过检查。 区别: 1.在测试的方面上有所不同:软件的黑盒测试意味着测试要在软件的接口处进行。软件的白盒测试是对软件的 阅读全文
posted @ 2019-05-12 15:47 狂奔~
摘要:register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。例如下面的内存块拷贝代码, 但是使用register修饰符有几点限制 (1)register变量必须是能被CPU所接受的类型。 这通常意味着register变量必须是一个单个的值 阅读全文
posted @ 2019-05-12 14:04 狂奔~
摘要:可以的,例如只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值 阅读全文
posted @ 2019-05-12 13:57 狂奔~
摘要:dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用。 首先,dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的source对象是否真的可以转换成target类型, 这种检查不是语法上的,而是真实情况的检查。 dyn 阅读全文
posted @ 2019-05-12 12:32 狂奔~
摘要:恢复内容开始 static_cast是一个强制类型转换操作符。强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast、dynamic_cast、const_cast、reinterpert_cast四个。 编译器隐式执行的任何类型转换都可以由static_cast来完成,比 阅读全文
posted @ 2019-05-12 10:50 狂奔~
摘要:恢复内容开始 参考博客:https://www.cnblogs.com/QG-whz/p/4513136.html const_cast是一个基于C语言编程开发的运算方法, 其主要作用是:修改类型的const或volatile属性。使用该运算方法可以返回一个指向非常量的指针(或引用)指向b1, 就可 阅读全文
posted @ 2019-05-12 10:14 狂奔~
摘要:原文链接:https://blog.csdn.net/xuwentao37x/article/details/27804169 多线程的程序是出了名的难编写、难验证、难调试、难维护,这通常是件苦差事。不正确的多线程程序可能可以运行很多年也不出一点错,直到满足某些临界的条件时,才出现意想不到的奇怪错误 阅读全文
posted @ 2019-05-12 09:35 狂奔~
摘要:转自:https://www.cnblogs.com/fengliu-/p/7218970.html C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstr 阅读全文
posted @ 2019-05-06 18:10 狂奔~
摘要:https://www.cnblogs.com/zhanghu52030/category/1231131.html 阅读全文
posted @ 2019-03-20 18:07 狂奔~
摘要:https://www.jianshu.com/p/a31d4fb5594f https://blog.csdn.net/y396397735/article/details/81272752 https://www.cnblogs.com/haippy/p/3252041.html std::co 阅读全文
posted @ 2019-03-15 18:33 狂奔~
摘要:http://www.cnblogs.com/haippy/p/3346477.html struct defer_lock_t {}; 该类型的常量对象 defer_lock(defer_lock 是一个常量对象 std::lock_guard 介绍 std::lock_gurad 是 C++11 阅读全文
posted @ 2019-03-15 18:23 狂奔~