复习

this 指针不在类中,不是类中的成员,不占类空间。 this指针类型为 类* const VC生成的构造函数会返回this指针,析构函数无返回值。 引用类型作为返回值: 默认参可以是函数返回值,也可以是变量。

拷贝构造_构造调用顺序_new

拾遗 创建对象数组,只能调用对象的默认构造函数。 ::前面什么都不写,表示调用全局函数 拷贝构造函数 两个对象拷贝,类似struct1 = struct2,实际是memcpy实现的,但是如果对象成员数据中有指针,可能造成指针重复释放的问题,所以有了拷贝构造函数。   有memcpy对象就需要拷贝构造函数,编译

构造函数_析构函数

拾遗 C++中class和struct的区别: 唯一区别,就是class默认私有,struct默认公有(因为要兼容C); class与union的区别: union默认公有,数据共享一块内存空间。   const char *GetszBuf(); 类似返回指针的函数,如果不希望可以修改指针指向的内容,要加上

内联函数_函数重载

内联函数 例如:inline int fun () 备注:inline不是预处理命令,所以编译选项增加/P是看不出来的。 内联是生成等价汇编代码,通过VC6生成的中间文件.cod可以看出来。生成.cod的步骤:Project Settings – C/C++ – Category: &#8211

类 面向对象编程,封装:类 用法: 类名 对象名; //实例化一个对象 类的内存布局和结构体一致,类的对齐规则和结构体一致。 类中的函数不和类中的数据在一起。(见后文的“类成员特点”) C++类: struct类 union类 class类 C++的类中都可以写函数,C中的struct、union不能写函数。 在类里写

const_引用_默认参

拾遗 不同类型指针强转,从低地址开始取。例: 最后输出A(0x41)。 printf会将float类型转为double类型,所以 printf(“%d”, float)时,会显示一个奇怪的数,例如: f在内存中是: dbl在内存中是: %d相当于*(int *)&dbl,所以最后输出1610612736(0x

C++概述

面向对象设计核心理念: 封装,继承,多态。 C++相比C,新数据类型bool,占1字节,true 或 false。 非0就是真,所以-1可以表示真。 C++中变量声明可以不在函数开始的位置,swtich-case会出现小问题,例如: 如果需要在case中定义变量,需要加{}: cout输出流 cin输入流 cout和c

编码技巧汇总

1、利用数组下标简化实现过程 现在有一个英文字符串,需要统计每个英文字母出现的次数。原始做法用伪代码描述,如下: 冗长的switch-case虽然丑,但还能实现统计功能。假如,现在除了要统计字母,还要统计标点符号怎么办?恐怕没人会写switch-case了。 运用数组下标,可以极大简化这个问题。 还是这个字符串,现在要

文件操作

文件 文件属于资源,用之前需要判断是否为NULL,用后要释放再赋值为NULL。 C中的“文件”,就相当于中文的“设备”,OS操作设备,在代码中体现为操作文件。 stderr不支持重定向。 stdin 标准输入文件,即键盘 stdout 标准输出文件,即显示器 stderr 标准错误文件,记录错误,只能在屏幕显示 写文件

malloc_调试源码_goto使用

拾遗 宏名全大写,用于区分函数。 .C 结构体中不能定义函数。 .CPP结构体中可以定义函数。 PAGE_开头的宏用于处理内存。 IMAGE_开头的宏用于处理文件。   debug(/Zi  /Od)版下的栈空间初始化为CC,堆空间初始化为CD。   cpp中,函数重载表示函数名相同,参数不同;运算