1. new malloc:
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函
数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
-
class Obj
-
{
-
public :
-
Obj(void){ cout << “Initialization” << endl; }
-
~Obj(void){ cout << “Destroy” << endl; }
-
void Initialize(void){ cout << “Initialization” << endl; }
-
void Destroy(void){ cout << “Destroy” << endl; }
-
};
-
-
void UseMallocFree(void)
-
{
-
Obj *a = (obj *)malloc(sizeof(obj)); // 申请动态内存
-
a->Initialize(); // 初始化
-
//…
-
a->Destroy(); // 清除工作
-
free(a); // 释放内存
-
}
-
-
void UseNewDelete(void)
-
{
-
Obj *a = new Obj; // 申请动态内存并且初始化
-
//…
-
delete a; // 清除并且释放内存
-
}
2. strlen,length,sizeof
sizeof可以计算一个类型的大小空间
length只是针对字符串而言的
标准c里没有length这个函数
只有在C++中的中才有length这个函数
在这里还要介绍下strlen.
sizeof("abcd")的值为5
length("abcd")的值为5
strlen("abcd")的值为4,不计算后面的'\0'
3. strcpy复制细节
strcpy复制时,会把末尾的'\0’也给复制进去,且覆盖一个字符。
4. 引入头文件语法
包含C++头文件有两种形式:
-
#include
-
#include “filename”
两种形式都会将头文件的内容替换在当前行。
两种形式的区别:
#1 – 以具体实现定义的顺序查找头文件, 即查找标准目录。
#2 – 先查找当前目录,然后是标准目录。
C++的头文件是没有后缀的,即没有”.h”. 当然加上也不会有错。
C库头文件的C++名字总是以字母c开头加上去掉后缀.h的C名字,例如:assert.h是C库头文件,对应的C++头文件是:cassert.
阅读(833) | 评论(0) | 转发(0) |