缺省参数+函数重载+构造函数
创始人
2024-05-25 03:22:49
0

目录

 一、缺省参数

(一)缺省参数概念

(二)缺省参数分类

1. 全缺省参数

2.  半缺省参数(缺省部分参数)

3. 注意

二、函数重载

(一)基本概念

(二)举例

三、构造函数基本概念

四、构造函数特性

(一)特征 

1. 函数名与类名相同

2. 无返回值(void也不行)

3. 对象实例化时编译器自动调用对应的构造函数

4. 构造函数可以重载 

(二)举例:不利用构造函数初始化对象

(三)举例:利用构造函数初始化对象

(四)举例

1. 如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数

2. 一旦用户显式定义编译器将不再生成

3. 解决调用默认构造函数的方法

五、注意


 一、缺省参数

(一)缺省参数概念

  • 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参
#include
using namespace std;
void test(int a=1)
{cout << a << endl;
}
int main()
{test(11);//11test();//1return 0;
}

(二)缺省参数分类

1. 全缺省参数

#include
using namespace std;
void test(int a = 1, int b = 2, int c = 3, int d = 4)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;cout << "d = " << d << endl;cout << endl;
}
int main()
{test();//a,b,c,d都使用缺省的return 0;
}

2.  半缺省参数(缺省部分参数)

#include
using namespace std;
void test(int a=1,int b=2,int c=3,int d=4)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;cout << "d = " << d << endl;cout << endl;
}
int main()
{test();//a,b,c,d都使用缺省的test(11);//给a传参,b、c、d使用缺省的test(11,22);//给a、b传参,c和d使用缺省的test(11, 22, 33);return 0;
}

3. 注意

  • 半缺省参数必须从右往左依次来给出,不能间隔着给(也就是调用时,传参从左向右依次传参,不能空缺)
  • 缺省参数不能在函数声明和定义中同时出 

二、函数重载

(一)基本概念

  • 是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题 

(二)举例

#include
using namespace std;// 1、参数类型不同
int Add(int left, int right)
{cout << "int Add(int left, int right)" << endl;return left + right;
}
double Add(double left, double right)
{cout << "double Add(double left, double right)" << endl;return left + right;
}// 2、参数个数不同
void test()
{cout << "test()" << endl;
}
void test(int a)
{cout << "test(int a)" << endl;
}// 3、参数类型顺序不同
void f(int a, char b)
{cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{cout << "f(char b, int a)" << endl;
}
int main()
{Add(1, 2);Add(1.4, 5.7);test();test(66);f(11, 'a');f('a', 16);return 0;
}

 

三、构造函数基本概念

  • 构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次 

四、构造函数特性

  • 构造函数的主要任务并不是开空间创建对象,而是初始化对象

(一)特征 

1. 函数名与类名相同

2. 无返回值(void也不行)

3. 对象实例化时编译器自动调用对应的构造函数

4. 构造函数可以重载 

(二)举例:不利用构造函数初始化对象

#include
using namespace std;
class Date
{
private:int _year;int _month;int _day;
public:void Init(int year, int month, int day)//定义初始化函数{_year = year;_month = month;_day = day;}void Print()//打印函数{cout << _year << "-" << _month << "-" << _day << endl;}
};
int main()
{Date d1;d1.Init(2022, 8, 9);d1.Print();//2022-8-9return 0;
}

(三)举例:利用构造函数初始化对象

#include
using namespace std;
class Date
{
private:int _year;int _month;int _day;
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print()//打印函数{cout << _year << "-" << _month << "-" << _day << endl;}
};
int main()
{Date d1(2022, 8, 9);//对象实例化时,自动调用构造函数d1.Print();//2022-8-9return 0;
}

(四)举例

1. 如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数

//举例1:类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数
#include
using namespace std;
class Date
{
private:int _year;int _month;int _day;
public:void Print()//打印函数{cout << _year << "-" << _month << "-" << _day << endl;}
};
int main()
{Date d1;//d1调用系统生成的无参构造函数d1.Print();return 0;
}

2. 一旦用户显式定义编译器将不再生成

3. 解决调用默认构造函数的方法

  • 第一种调用系统默认的无参构造函数
  • 第二种自己实现无参构造函数

#include
using namespace std;
class Date
{
private:int _year;int _month;int _day;
public:Date(){_year=0;_month = 1;_day = 2;}Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print()//打印函数{cout << _year << "-" << _month << "-" << _day << endl;}
};
int main()
{Date d1;d1.Print();Date d2(2022, 9, 14);d2.Print();return 0;
}
  • 第三种利用全缺省的构造函数

 

#include
using namespace std;
class Date
{
private:int _year;int _month;int _day;
public:Date(int year=2021, int month=1, int day=8){_year = year;_month = month;_day = day;}void Print()//打印函数{cout << _year << "-" << _month << "-" << _day << endl;}
};
int main()
{Date d1;d1.Print();Date d2(2022, 9, 14);d2.Print();return 0;
}

五、注意

  • 无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个。无参构造函数、全缺省构造函数、我们没写编译器默认生成的构造函数,都可以认为是默认构造函数

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...