/*
有關構造函數
構造函數(constructor)來處理對象的初始化。構造函數是一種特殊的成員函數,
與其他成員函數不同,不需要用戶來調用它,而是在建立對象時自動執行。1、構造函數定義及調用
1)C++中的類可以定義與類名相同的特殊成員函數,這種與類名相同的成員函數叫做構造函數;
2)構造函數在定義時可以有參數;
3)沒有任何返回類型的聲明。
2、構造函數的調用
自動調用:一般情況下C++編譯器會 自動調用 構造函數
手動調用:在一些情況下則需要手工調用構造函數有關析構函數
3、析構函數定義及調用
1)C++中的類可以定義一個特殊的成員函數清理對象,這個特殊的成員函數叫做析構函數
語法:~ClassName()
2)析構函數沒有參數也沒有任何返回類型的聲明
3)析構函數在對象銷燬時自動被調用
4)析構函數調用機制
C++編譯器自動調用
*/
#define _CRT_SECURE_NO_WARNINGS
#include "string"
#include <stdexcept>
#include <iostream>
#include <iomanip>
using namespace std;
#if 1
class Test
{
public:
Test()//無參數構造函數
{
cout << "我是構造函數 被執行了" << endl;
p = (char *)malloc(100);
strcpy(p, "hello world");
a = 10;
}
void print()
{
cout << p << endl;
cout << a << endl;
}
~Test()//析構函數
{
if (p != NULL)
{
free(p);
}
cout << "我是析構函數 被調用了" << endl;
}
private:
int a;
char *p;
protected:
};
//給對象搭建一個舞臺,研究對象的行爲
//注意對象的生命週期,只有生命週期結束的時候,纔會調用析構函數
void test()
{
//先創建的對象後釋放
Test t1;
t1.print();
printf("分隔符\n");
Test t2;
t2.print();
}
#endif