① 概念
构造函数就是和类名一样,而且是没有返回值的函数。如下所示:
class demo_class
{
public:
demo_class();//构造函数 如果不指定属性,则默认为私有的
};
如果类里面的构造函数demo_class是私有的,那样就会编译器就会报错。如下图所示:
② 特点
① 如果自己没有定义构造函数,则编译器会使用默认构造函数。 ② 默认的构造函数是一个空的函数。 ③ 构造函数可以重载,只需要通过形参的不同辨别即可。 ③ 作用
构造函数会在定义类对象是自动被调用,所以有初始化类成员数据的作用。同时构造函数不能是私有的。
以下代码是构造函数的初始化作用以及重载的实例:
#includeusing namespace std; class demo_class { public: string string_data; demo_class();//构造函数 默认为私有类 demo_class(string string_data); }; demo_class::demo_class() { cout<<我是来打酱油的构造函数!< string_data = string_data; }
注意!当是以下形式定义demo_class类对象时,只有打酱油的构造函数会自动启动!
int main()
{
demo_class demo_obj;//这样定义对象则只会调用打酱油的构造函数
return 0;
}
注意!当是以下形式定义demo_class类对象时,只有初始化string_da的构造函数会自动启动!
int main()
{
demo_class demo_obj(旦丁在此!);//把demo_obj类对象中的string_data初始化为 “旦丁在此”
cout<
二、拷贝构造函数
① 概念
和构造函数一样,唯一不同的时拷贝构造函数有形参,该形参接收一个该类的对象。具体如下所示:
class demo_class
{
public:
string string_data;
demo_class();//构造函数 默认为私有类
demo_class(string string_data);
demo_class(demo_class const &tmp_dome);
};
② 作用
拷贝构造函数中的拷贝可以理解成赋值,把一个类对象赋值给另外一个对象。(简单点来说就是把形参的对象赋值给你定义的对象),
也就是初始化类对象的作用。具体写法如下:
class demo_class
{
public:
string string_data;
demo_class();//构造函数 默认为私有类
demo_class(string string_data);
demo_class(demo_class const &tmp_dome);//拷贝构造函数
};
demo_class::demo_class(const demo_class &tmp_demo)
{
string_data = tmp_demo.string_data;
}
int main()
{
demo_class demo_obj_one("旦丁在此!");//定义一个被拷贝的对象
demo_class demo_obj_two;//调用拷贝构造函数,把demo_obj_one对象拷贝给demo_obj_two对象
cout<
运行结果
我是来初始化类中的string_data成员的!
旦丁在此!



