前言
创建一个对象时,常常需要做某些初始化的工作,例如对数据成员赋值,注意,类的数据成员是不能在声明类时初始化的
为了解决这个问题,C++编译器提供了 构造函数 来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。
2、构造函数的分类(三个)
(1)无参构造函数
Test()
{
;
}
(2)带参数构造函数
Test(int a,int b)
{
;
}
(3)赋值构造函数
Test(const Test &obj)
{
;
}
构造函数的调用
#include <iostream>
using namespace std;
class Test
{
public:
Test() //无参构造函数
{
m_a = 0;
m_b = 0;
cout << "无参构造函数" << endl;
}
Test(int a) //一个参数的有参构造函数
{
m_a = a;
m_b = b;
}
Test(int a,int b) //有参构造函数 //调用有参构造函数有三种方法
{
m_a = a;
m_b = b;
cout << "有参构造函数" << endl;
}
Test(const Test& obj) //赋值构造函数(copy构造函数)
{
cout << "我也是构造函数" << endl;
}
public:
void print()
{
cout << "普通成员函数" << endl;
}
protected:
private:
int m_a;
int m_b;
}
void main()
{
Test t1; //无参构造函数的调用 (对象后什么都不写)
//有参函数的第一种调用方法 括号法
Test t1(1,2); //调用两个参数的构造函数
t1.ptint();
//有参函数的第二种调用方法 =号法 (=操作不再是C语言中的功能。C++对= 进行了功能性增强)
Test t2 = (3,4); //调用一个参数的构造函数 因为()号里是逗号表达式,结果为 4;即最后一个数
t2.print();
Test t3 = 4;
t2.print(); //跟 Test t2 = (3,4) 效果是一样的
//有参函数的第三种调用方法 手动的调用构造函数
Test t4 = Test(1,2); //调用了有两个参数的构造函数
//直接调用构造函数,会产生匿名对象(涉及到匿名对象的去和留)
cout << "hello" << endl;
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。