C++核心技术篇(二)

本文详细介绍了C++中头文件与源文件的作用及如何使用#include指令进行文件包含,对比了尖括号与双引号的区别。同时,深入解析了类与对象的概念,以及析构函数在对象销毁过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

头文件与源文件

在前面的章节我们经常会用到输入输出流、字符串的头文件(。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标题被销毁,自身析构函数被调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茫渡。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值