随笔分类 - C++拾遗
摘要:最近项目里有一个奇怪的需求:为编码完成后的AAC文件添加ID3v2 header。这个ID3v2是个什么东西呢?简单的说就是一系列元数据,里面存储了一些跟歌曲相关的信息(比如:演唱者、歌曲名、备注等等),比如说我在网络上下载了一首歌曲,在windows的文件浏览器下有时就能看到这首歌曲的一些元数据信
阅读全文
摘要:在函数执行到return语句时,将不再向下执行,那么如何让函数一次性返回多个值?一般可以用两种方式解决这个问题,利用指针和利用结构体。 一. 利用指针直接上代码 #include <iostream> using namespace std; int main() { int* test(int,i
阅读全文
摘要:1. 内部类的概念 如果一个类定义在另一个类的内部,这个内部类就叫做内部类。注意此时这个内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去调用内部类。外部类对内部类没有任何优越的访问权限。 即说:内部类就是外部类的友元类。注意友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所
阅读全文
摘要:volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。 如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象,这就是著名的缓存
阅读全文
摘要:mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,被const关键字修饰的函数的一个重要作用就
阅读全文
摘要:今天在代码里看到了这样一段代码: 起初一直搞不懂为什么要加个typename,后来搜索了一下才知道这个关键字是有目的的: 如果不加这个关键字,编译器就不知道RefBase::weakref_type到底是个什么东西?可能是静态成员变量,也有可能是静态成员函数,也有可能是内部类。 加上这个关键字等于手
阅读全文
摘要:C++中的友元函数主要应用于以下场景: 友元函数 第一种场景 代码中有一个全局函数,该函数想要去访问某个类的成员变量(该类的成员变量是private的,且该类并未提供任何获取获取私有成员变量的public方法),这时候可以在这个类中把该全局函数声明为友元函数,这样这个全局函数就具备了能够获取那个类的
阅读全文
摘要:C++中的static成员变量主要用来为多个对象共享数据 例: 运行结果:小明的年龄是15,成绩是90(当前共有1名学生)李磊的年龄是16,成绩是80(当前共有2名学生)张华的年龄是16,成绩是99(当前共有3名学生)王康的年龄是14,成绩是60(当前共有4名学生) 需要注意的是: 1.static
阅读全文
摘要:1、相同点 为了避免同一个文件被include多次。 2、不同点 在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 #ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点
阅读全文
摘要:所谓模板函数其实就是建立一个通用函数,这个通用函数的形参类型不具体指定,用一个虚拟类型来代表,这个通用函数就被称为函数模板。 例:
阅读全文