头文件与源文件
在前面的章节我们经常会用到输入输出流、字符串的头文件(。h),其中包含数据和函数声明。而这些文件的实现部分一般会放到与头文件同名的实现源文件中(。cpp).
在一个源文件中使用#include指令,可以将头文件的全部内容包含进来,也就是将另外的文件包含到本文件中。#include指令是编译程序将另一个文件嵌入带有#include的源文件,被读入的源文件必须使用双括号或尖括号括起来。例如:
#include<stdio.h>
#include"stdio.h"
上面给出了双括号和尖括号的形式,这两者之间的区别在于,用尖括号时,系统到存放C++库函数头文件所在目录中寻找要包含的文件,这种称为标准方式;用双引号时,系统先在用户当目录中寻找要包含的文件,若找不到,在到存放C++库函数头文件所在目录中寻找要包含的文件。通常情况下,如果为了调用库函数而用#include命令来包含相关的头文件,则用尖括号,可以节省查找时间。如果为了调用库函数而用#include命令来包含相关的头文件,则用尖括号,可以节省查找时间,如果要包含的是用户自己编写的文件,一般用双引号,用户自己编写的文件通常是在当前目录中。如果文件不在当前目录中,双引号可以给出文件路径。
对象
对象也称类的事例化。定义新类后,可以通过类名来声明一个对象
类的析构函数
当类的对象被销毁时,编译器会调用类的析构函数。与构造函数相比,析构函数主要执行的是收尾工作。构造函数名标识符和类名标识符相同,析构函数名标识符就是类名标识符前加“~”。
例如
~CPerson();
下面用一个例子来介绍析构函数的调用
例:析构函数的调用‘
#include<string>
#include<iostream>
using namespace std;
class title{
public:
title(string str);
title();
~title();
string m_str;
};
title.h文件中声明一个title类
#include<iostream>
#include"stdafx.h"
#include"title.h"
using std::cout;
using std::endl;
title::title(string str){
m_str=str;
cout<<str<<endl;
}
title::title(){
m_str="无名标题";
cout<<"这只是一个无名标题..."<<endl;
}
title::~title(){
cout<<"标题"<<m_str<<"要被销毁了"<<endl;
}
含有main函数的cpp,表示程序的入口,代码如下:
#include"stdafx.h"
#include"title.h"
#include<iostream>
using namespace std;
int main(){
string str("Hello Word!!!");
title out(str);
if(true){
title t;
}
cout<<"if执行完成"<<endl;
return 0;
}
从程序运行结果来看,首先产生了”hello word“标题,之后产生了if语句块中的无名标题。if语句块执行完毕后,对象t被销毁。然后用输出语句标识了分语句块的完成。程序执行完毕,回收所有内存。out标题被销毁,自身析构函数被调用。