今天复习的是构造函数这一块的内容。直接看代码
#include<iostream>
using namespace std;
class Test
{
public:
Test() //无参数的构造函数 吴返回类型
{
m_a = 10;m_b = 20; //可以对成员完成初始化工作
cout << "无参数构造函数" << endl;
}
Test(int a, int b) //有参数构造函数
{
m_a = a;m_b = b;
cout << "2参数构造函数" << endl;
}
Test(const Test&obj) //赋值构造函数
{
cout << "我也是构造函数" << endl;
m_b = obj.m_b + 100;m_a = obj.m_a + 100;
}
Test(int a)
{
cout << "一个参数构造函数" << endl;
}
~Test()
{
cout << "我是析构函数" << endl;
}
void print()
{
cout << "hahahha" << endl;
cout << "m_a=" << m_a << "m_b=" << m_b << endl;
}
private:
int m_a;int m_b;
};
//--------------------------------------------------------------------
int main01()
{
Test t1; //如果定义一个对象,什么都没写 则调用无参数构造函数。
return 0;
}
//----------------------------------------
int main()
{
Test t1();
Test t2(1, 4); //调用有参数构造函数
//t1.print(); // 错误.print”的左边必须有类 / 结构 / 联合 把t1换成t2就可以了
Test t3 = (3, 4); //会调用一个参数构造函数,右边是逗号表达式相当于把4赋值给t3
Test t4 = 4; //等同于上面函数;
Test t5 = Test(5, 2); //直接调用,手动调用
t5.print();
Test t6 = t2; //用t2初始化t6!!!初始化 会调用拷贝构造函数
t6.print();
Test t7(2, 1); t7.print();
t7 = t2; t7.print(); //将t2赋值给t7 和上面是两种不同概念
Test t8(t7);
t8.print();
return 0;
}