随笔分类 - C/C++
摘要:用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换,例如:不加:Circle A = Circle(1.23) 加上之后:只能写:Circle A(1.23) 发生隐式转换,除非有心利用,隐式转换常常带来程序逻辑的错误,而且这种错误一旦发生是很难察觉
        阅读全文
                
摘要:1)map:经过排序了的二元组的集合,map中的每个元素都是由两个值组成,其中的key(键值,一个map中的键值必须是唯一的) 是在排序或搜索时使用,它的值可以在容器中重新获取;而另一个值是该元素关联的数值。比如,除了可以ar[43] = "overripe"这样找到一个数据,map还可以通过ar[
        阅读全文
                
摘要:1)全局静态变量:在静态存储区(bss段,数据段),在整个程序运行期间都存在,只对它所在的文件可见 2)局部静态变量:在静态存储区(bss段,数据段),当定义它的函数或者语句块结束的时候,作用域随之结束,但是(注:)当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放
        阅读全文
                
摘要:1)union是几个不同类型的变量共占一段内存(相互覆盖);struct是把不同类型的数据组合成一个整体 2)对齐方式略有区别;union不需要+,只需要拿出对齐后的最长 structureunion Keyword struct defines a structure. Keyword union
        阅读全文
                
摘要:vector的内存增长问题,其实无非是vector中size()和capacity()问题。vector的一个缺点就是它的内存分配是按照2的倍数分配内存的。当当前容量对插入元素不够时,分配一块新的内存,这块内存的容量是原vector容量 的2倍大小,然后复制旧内存,释放旧内存,可能多次涉及拷贝构造函
        阅读全文
                
摘要:变量可以分为全局变量、静态全局变量、局部变量和静态局部变量变量的声明有两种情况:1)一种是需要建立存储空间的(定义性声明)。例如int a 在生命的时候就已经建立了存储空间。2)另一种是不需要建立存储空间的(引用性声明)。例如extern int a 其中变量a是在别的文件中定义的。内存区域的划分:
        阅读全文
                
摘要:从C++角度上说,使用new分配堆空间可以调用类的构造函数,而malloc()函数仅仅是一个函数调用,它不会调用构造函数,它所接受的参数是一个unsigned long类型。同样,delete在释放堆空间之前会调用析构函数,而free函数则不会。 new/delete Allocate/releas
        阅读全文
                
摘要:代码区(code area) 程序内存空间 全局数据区(data area) 堆区(heap area) 栈区(stack area) 一个由C/C++编译的程序占用的内存分为以下几个部分, 1)全局区(静态区:BSS段,数据段)(static)存放全局变量、静态数据,const常量。程序结束后有系
        阅读全文
                
摘要:(1)指针是一个变量,只不过这个变量存储的是一个地址,这个地址指向内存的一个存储单元。引用跟原来的变量实质是一个东西,只不过是原变量的一个别名,不占用内存,只是在编译时,系统会临时分配一个类似与变量的东西存储,编译完也就释放了,具体咋折腾跟编译器有关系。(一般讨论的堆区和栈区...占用内存,都是指的
        阅读全文
                
摘要:Things You'll Need Proficiency in C++ C++ compiler Debugger and other investigative software tools 1 Understand the operator basics. The C++ operator 
        阅读全文
                
摘要:在Visual Studio中 第一步:打断点 第二步:Debug Star Debugging 或直接按”F5“ 第三步:Debug Windows Disassembly,如下图 第四步:汇编代码已经出来了…… 在CodeBlocks中 第一步:打断点 第二步:Debug Start/Conti
        阅读全文
                
摘要:__cdecl __fastcall与__stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。 1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数
        阅读全文
                
摘要:const三个原则:第一,如果你参数里面的变量在函数体内不改变,那么把该参数定义成const... ;第二,如果你的函数不会改变类里面的成员变量,把该函数定义成const成员函数,Eg: int f() const;第三,判定该指针是不是const指针只跟*的位置有关系,const在*右边的情况下,...
        阅读全文
                
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号