构造函数与析构函数(一)
一、构造函数
(1)构造函数
·构造函数是特殊的成员函数
·创建类类型的新对象,系统自动会调用构造函数
·构造函数是为了保证对象的每个数据成员都被正确初始化
PS:1.当没有构造函数的时候,系统会自动生成无参的构造函数
我们一般自己加上无参构造函数,不做任何处理
2.全局对象的构造函数先于Main函数执行
1.构造函数特点
·函数名与类名完全相同
·不能定义构造构造函数的类型(返回类型),也不能使用void,通常情况下构造
函数应声明为公有函数,否则它不能像其他成员函数那样被显式地调用
·构造函数被声明为私有有特殊的用途
·成员对象的构造函数先于本身对象的构造函数调用
2.默认构造函数
·不带参数的构造函数
·如果程序未声明,则系统自动生成一个默认构造函数
构造函数代码示例:
Test.h
#ifndef _TEST_H_
#define _TEST_H_
class Test
{
public:
Test(int x,int y,int z);
private:
int x_;
int y_;
int z_;
};
#endif
Test.cpp
#include "Test.h"
#include <iostream>
using namespace std;
Test::Test(int x, int y, int z)
{
cout << "init Test!" << endl;
x_ = x;
y_ = y;
z_ = z;
}
main.c
#include <iostream>
#include "Test.h"
using namespace std;
int main()
{
Test t(1,2,3);
return 0;
}
运行结果:
3.构造函数的重载
代码示例:
Test.h
#ifndef _TEST_H_
#define _TEST_H_
class Test
{
public:
Test();//默认的无参构造函数
Test(int x,int y,int z);
private:
int x_;
int y_;
int z_;
};
#endif
Test.cpp
#include "Test.h"
#include <iostream>
using namespace std;
Test::Test()
{
cout << "init Test2!\n" << endl;
}
Test::Test(int x, int y, int z)
{
cout << "init Test!" << endl;
x_ = x;
y_ = y;
z_ = z;
}
main.c
#include <iostream>
#include "Test.h"
using namespace std;
int main()
{
Test t1;
Test t(1,2,3);
return 0;
}
运行结果: