#include <iostream>
#include <windows.h>
#include <cstring>
using namespace std;
/*********************************************************************/
//有参无参的使用和作用介绍
class Text
{
public:
Text() //无参数 构造函数
{ //作用:完成对属性的初始化工作
a = 10;
p =NULL;
cout << "我是构造函数 被执行了" << endl;
}
void Cout()
{
cout << p << endl;
cout << a << endl;
}
~Text() //析构函数
{ //释放内存空间
if (p != NULL)
{
free(p);
}
cout << "我是析构函数 被执行了" << endl;
}
protected:
private:
int a;
char *p;
};
//给对象搭建一个舞台,研究对象的行为
void objpaly()
{
//先构造,后稀释
//先执行t1的构造函数,再执行t2的构造函数,然后结束时先执行t2的析构函数,再执行t1的析构函数
Text t1;
t1.Cout();
Text t2;
t2.Cout();
}
int main1()
{
objpaly();
system("pause");
return 0;
}
/************************************************************************************/
//调用有参数构造函数的 3 种方法
class Text2
{
public:
Text2() //无参数 构造函数
{ //作用:完成对属性的初始化工作
m_a = 0;
m_b = 0;
cout << "无参数 构造函数" << endl;
}
Text2(int a) //有参数 构造函数
{ //作用:完成对属性的初始化工作
m_a = a;
cout << "111有参数 构造函数" << endl;
cout << "a=" << m_a << endl;
}
Text2(int a, int b) //有参数 构造函数
{ //作用:完成对属性的初始化工作
m_a = a;
m_b = b;
cout << "222有参数 构造函数" << endl;
}
//赋值构造函数(也称copy构造函数)//用一个构造函数去调用另一个构造函数
Text2(const Text2& obj)
{
cout << "我也是构造函数" << endl;
}
public:
void Printf()
{
cout << "普通成员函数" << endl;
}
protected:
private:
int m_a;
char m_b;
};
int main05()
{
Text2 t1; // 这样写直接调用 无参数构造函数 C++自动的调用构造函数
//1 () 法调用有参数函数
Text2 t2(1, 2); //调用有参数函数 C++自动的调用构造函数
Text2 t3(1);
t2.Printf();
//2 = 法调用有参数构造函数
Text2 t4 = (1, 2, 3, 4); //C++对 = 进行了功能增强,逗号表达式的最后的值是参数的值
Text2 t5 = 5;
//3 手工直接的调用构造函数
Text2 t6 = Text2(1, 2); //先调用有参数构造函数,再通过有参构造函数去调用copy构造函数
Text2 t7 = Text2(1); //产生匿名对象,(匿名对象的额去和留)
//t7对象的初始化
t1 = t7; //赋值操作,把t7copy给t1
system("pause");
return 0;
}
构造函数
最新推荐文章于 2022-07-25 23:20:24 发布