C++入门经典-例7.3-析构函数的调用

1:析构函数的名称标识符就是在类名标识符前面加“~”。例如:

~CPerson();

2:实例代码:

(1)title.h

#include <string>//title是一个类,此为构造了一个类
#include <iostream>
using std::string;

class title{
public:
        title(string str);//这是一个构造函数
        title();//这是一个无参构造函数
        ~title();//这就是一个析构函数,执行的是收尾工作。
        string m_str;//成员变量
};

(2)title.cpp

#include "stdafx.h"
#include <iostream>
#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;
}

(3)main.cpp

// 7.3.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "title.h"
#include <iostream>
using std::cout;
using std::endl;
int main()
{
    string str("Hello World!!!!");
    title out(str);
    if (true)
    {
        title t;
    }
    cout << "if执行完成" << endl;
    return 0;
}

运行结果:

时间: 2024-12-26 18:16:56

C++入门经典-例7.3-析构函数的调用的相关文章

C++入门经典-例8.2-构造函数的访问顺序

1:父类和子类中都有构造函数和析构函数,那么子类对象在创建时是父类先进行构造还是子类先进行构造?同样,在子类对象释放时,是父类先进行释放,还是子类先进行释放?这都是有先后顺序的.答案是当从父类派生一个子类并声明一个子类的对象时,它将先调用父类的构造函数,然后调用当前类的构造函数来创建对象:在释放之类对象时,先调用的是当前类的析构函数,然后是父类的析构函数. 2:实例代码如下: // 8.2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #inc

C++入门经典-例6.12-使用数组地址将二维数组输出

1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数组的首地址.&a[m][n]就是第m行n列元素的地址 (3)&a[0]是第0行的首地址,当然&a[n]就是第n行的首地址 (4)a[0]+(n-1)表示第0行第n个元素 (5)*(*(a+n)+m)表示第n行第m列 (6)*(a[n]+m)表示第n行第m列元素 2:代码如下: // 6

C++入门经典-例7.9-对象数组,批量化生产

1:在数组内容中我们了解到,数组是通过指针分配到的一段额定大小的内容.同样,数组也可以包含对象.声明对象数组的形式如下: box boxArray[5]; box boxArray2[2]={box(1,1,1),box(2,2,2)}; box boxArray3[3]={3,styleBox}; 值得注意的是,第一种申请对象数组的方法必须保证类中含有默认的够好函数,否则编译器将会报错.同样,可以通过对象指针申请动态数组.例如: box* box; pbox=new box[n];//n为整数

C++入门经典-例3.5-判断某一年是否是闰年之嵌套判断

1:代码如下: // 3.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int iYear; cout << "请输入年份" << endl; cin >> iYear; if(iYear%4==0) { if(iYear%100==0) { if(iYear%40

C++入门经典-例2.15-逗号表达式的应用

1:代码如下: // 2.15.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include<iostream> using namespace std; void main() { int a=4,b=6,c=8,res1,res2; res1=a,res2=b+c; for(int i=0,j=0;i<2;i++) { printf("y=%d,x=%d\n",res1,res2); } } 运行结果:

C++入门经典-例3.4-根据成绩划分等级

1:代码如下: // 3.4.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { cout<<"输入成绩"<<endl; int iInput; cin >> iInput; if(iInput>=90) { cout << "优秀" &

C++入门经典-例6.5-连接字符串

1:运行代码如下: // 6.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using std::cout; using std::endl; using std::cin; void main() { char str1[30],str2[20]; cout<<"请输入数组1:"<< endl; cin>>str1; cout<

C++入门经典-例6.20-修改string字符串的单个字符

1:使用+可以将两个string 字符串连接起来.同时,string还支持标准输入输出函数.代码如下: // 6.20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <string> using namespace std; int main() { string str1 = "您好,"; string str2; cout<<&

C++入门经典-例3.2-根据分数判断是否优秀

1:代码如下: // 3.2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int iInput; cout<<"大于90为优秀成绩"<<endl; cout<<"请输入学生成绩"<<endl; cin >> iInput;