目录
一、缺省参数
(一)缺省参数概念
(二)缺省参数分类
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;
}
#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;
}
#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;
}
#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;
}
#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++编译器会自动生成一个无参的默认构造函数
#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;
}
#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;
}