1、 构造函数:
(1)定义:
1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数;
2)构造函数在定义时可以有参数;
3)没有任何返回类型的声明。
(2)调用:
自动调用:一般情况下C++编译器会自动调用构造函数
手动调用:在一些情况下则需要手工调用构造函数
(3)例子代码:
#include <stdio.h>
class test
{
public:
test()
{
m_a = 10;
m_b = 20;
printf("无参构造函数被调用\n");
}
test(int a)
{
m_a = a;
printf("1个参数的构造函数被调用\n");
}
test(int a, int b)
{
m_b = b;
printf("2个参数的构造函数被调用\n");
}
private:
int m_a;
int m_b;
};
int main()
{
test t1;
test t2(1, 2);
test t3 = 100;
test t4 = test(20, 30);
return 0;
}
2、析构函数
(1)定义:
1)C++中的类可以定义一个特殊的成员函数清理对象,这个特殊的成员函数叫做析构函数。 语法:~ClassName();
2)析构函数没有参数也没有任何返回类型的声明;
3)析构函数在对象销毁时自动被调用。
(2)调用:c++编译器自动调用。
(3)例子代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
class test5_1
{
public:
test5_1()
{
printf("调用构造函数\n");
}
~test5_1()
{
printf("调用析构函数\n");
}
private:
int m_a;
};
int main5_1()
{
test5_1 t1;
return 0;
}
class test5_2
{
public:
test5_2()
{
m_name = (char *)malloc(sizeof(char) * 20);
printf("构造函数被调用!\n");
}
~test5_2()
{
if (m_name != NULL)
{
free(m_name);
m_name = NULL;
}
printf("析构函数被调用!\n");
}
private:
char *m_name;
};
int main()
{
test5_2 t1;
printf("--------------------------------\n");
return 0;
}