- 基础变量类型
变量类型标识符 | 变量类型 | 变量类型说明(32位/64位 操作系统) |
---|---|---|
b | bool | 布尔类型 (1字节 / 1字节) |
s | short | 短整型(2字节 / 2字节) |
us | unsigned short | 无符号短整型(2字节 / 2字节) |
w | WORD | 无符号短整型(2字节 / 2字节) |
i | int | 整型(4字节 / 4字节) |
ui | unsigned int | 无符号整型(4字节 / 4字节) |
l | long | 长整型(4字节 / 8字节) |
ul | unsigned long | 无符号长整型(4字节 / 8字节) |
long long (C++11) | ||
dw | DWORD | 无符号长整型(4字节 / 8字节) |
c/ch | char | 字符类型(1字节 / 1字节) |
uc | unsigned char | 无符号字符类型(1字节 / 1字节) |
sz | char [] / char * | 字符串类型(4字节 / 8字节) |
f | float | 单精度浮点型(4字节 / 4字节) |
d | double | 双精度浮点型(8字节 / 8字节) |
by | BYTE | 字节类型(1字节 / 1字节) |
str | string | string类型字符串 |
st | struct | 结构类型 |
e | enum | 枚举类型 |
h | HANDLE / HINSTANCE | 句柄 |
vec | vector | 容器中元素类型 + ivect 为变量类型标识,如ivec |
list | list | 容器中元素类型 + list 为变量类型标识, 如 ilist |
map | map | 容器中元素类型 + map 为变量类型标识, 如 imap |
cout << "sizeof(bool)= " << sizeof(bool) << endl;
cout << "sizeof(short)= " << sizeof(short) << endl;
cout << "sizeof(unsigned short)= "<< sizeof(unsigned short) << endl;
cout << "sizeof(WORD)= " << sizeof(WORD) << endl;
cout << "sizeof(int)= " << sizeof(int) << endl;
cout << "sizeof(unsigned int)= " << sizeof(unsigned int) << endl;
cout << "sizeof(long)= " << sizeof(long) << endl;
cout << "sizeof(unsigned long)= " << sizeof(unsigned long) << endl;
cout << "sizeof(long long)= "<< sizeof(long long) << endl;
cout << "sizeof(DWORD)=" << sizeof(DWORD) << endl;
cout << "sizeof(DWORD32)= " << sizeof(DWORD32) << endl;
cout << "sizeof(DWORD64)= " << sizeof(DWORD64) << endl;
cout << "sizeof(DWORDLONG)= "<< sizeof(DWORDLONG) << endl;
cout << "sizeof(DWORD_PTR)= " << sizeof(DWORD_PTR) << endl;
char a[1];
cout << "sizeof(&a)= " << sizeof(&a) << endl;
char *p;
cout << "sizeof(p)= " << sizeof(p) << endl;
cout << "sizeof(float)= " << sizeof(float) << endl;
cout << "sizeof(double)= " << sizeof(double) << endl;
cout << "sizeof(BYTE)= " << sizeof(BYTE) << endl;
结果图:
VS中<windef.h>头文件中包含定义
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
- 虚函数
C++中的虚函数 主要是 实现 多态。
简单来说,用父类 指针 指向 其子类的实例,通过父类指针调用实际子类的成员函数。 - 虚析构函数
当基类指针指向用new运算符动态生成的派生类对象,生成的对象使用delete派生类对象的指针来释放。如果delete基类对象来释放内存,则会导致程序出错。`
class A
{
public: ~A();
// public: virtual ~A();
}
class B :pubilc A
{
public: ~B();
}
int main()
{
A *p = new B;
delete p; //此时调用的是**基类A**的构造函数
// 声明**基类析构函数**为 **virtual** 之后
// delete p; //此时调用的是**派生类B**的构造函数
return 0;
}