目录
前言
构造函数有两种分类方式和三种调用方法。可以按照参数分类、类型分类两种方式分类,可以按照括号法,显示法、隐式转换法三种方式调用。
一、构造函数的语法
构造函数的作用是为了在创建对象时为对象的成员属性赋值,由编译器自动调用。如果我们不提供构造函数,编译器会为我们提供一个是空实现的构造函数。语法如下:
class gz
{
public:
gz(){ //构造函数,函数名与类名一致。无返回值无需写void,可发生重载,自动调用。
cout<<"gz"<<endl;
}
};
二、两种分类方式
1.按参数分类
按参数分类可以分为有参构造(默认构造)和无参构造,代码示例如下:
class gz
{
public:
gz(){ //无参构造
cout<<"无参"<<endl;
}
gz(int n){ //有参构造
cout<<"有参"<<endl;
}
};
2.按类型分类
按类型分类可以分为普通构造和拷贝构造,有参构造和无参构造都叫普通构造,拷贝构造则是在一个构造函数的参数中传入另一个构造函数的数据,如:gz(const gz &n)。
三、构造函数的调用
构造函数有三种调用方法,分别是括号法,显示法,隐式转换法。
代码分别如下:
//括号法
gz n1(100);
//显式法
gz n2=gz(100);
//隐式转换法崛起
gz n3=100;
调用默认构造时,不要加()。
构造函数的调用规则如下:
编译器会默认添加构造函数(空)、析构函数(空)以及拷贝函数(值传递),如果我们定义了有参构造函数,编译器则不提供无参构造函数(需要使用须自己提供),如果定义了拷贝构造函数则不提供无参或者有参构造函数(需要使用须自己定义)。
总结
构造函数有两种分类方式和三种调用方式,要根据自己的使用习惯和使用场景选择合适的调用方法。