第二章? ?函数
第一节? ? ?什么是构造函数
第二节? ? ?函数重载
第三节? ? ?默认构造函数
第四节? ? ?拷贝构造函数
第五节? ? ?初始化
第一节? ? 构造函数
- 特殊的成员函数(说明具有一般成员函数所具有的所有特性),作用:为对象分配内存并初始化对象为一个特定的状态。
- 构造函数的名称必须与它所属的类名相同,应该被声明为公有函数,而且没有任何类型的返回值。
- 会由系统自动调用,不能像其他成员函数被用户直接调用。
- 构造函数,日期代码,举例如下:
-
#include<iostream>
using namespace std;
class Date
{
private:
int year;
int month;
int day;
public:
Date(int y,int m,int d);
void show_date();
};
Date::Date(int y,int m,int d) //带参数的构造函数
{
year=y;
month=m;
day=d;
cout<<"constructor called"<<endl;
}
void Date::show_date()
{
cout<<year<<"/"<<month<<"/"<<day<<endl;
}
int main()
{
Date Today(2021,10,24),Tomorrow(2021,10,24); //Date类的两个对象
cout<<"Today is";
Today.show_date();
cout<<"Tomorrow is";
Tomorrow.show_date();
}
第二节? 函数重载
- 函数名相同,通过个数和类型进行区分构造函数。优点:重载节省命名空间,对用户友好。
- 系统根据函数名和参数列表共同确定该调用哪个函数。
- ????????构造函数的重载输出日期代码,举例如下:
#include<iostream>
using namespace std;
class Date
{
private:
int year;
int month;
int day;
public:
Date(); //声明一个无参数的构造函数
Date(int y,int m,int d); //声明一个有参数的构造函数
void show_Date; //声明成员函数
};
Date::Date() //在类外定义无参数构造函数
{
year=2021;
month=10;
day=24;
}
Date::Date(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void Date::show_Date()
{
cout<<year<<"/"<<month<<"/"<<day<<endl;
}
int main()
{
Date Today(2021,10,24);
Date Tomorrow;
Today.show_Date();
Tomorrow.show_Date();
}
第三节? ?默认构造函数
- 在C++的类中必须要有一个构造函数,这个构造函数可以是系统提供的,亦可以是自己定义的。
- 声明构造函数时,可以为其提供默认参数。优点:在声明函数时没有提供参数,也会按照默认的参数对对象进行初始化。注意:一个类不能同时拥有多个默认构造函数。
- 带默认参数的构造函数举例:
#include<iostream>
using namespace std;
class Date
{
private:
int year;
int month;
int day;
public:
Date(int y=2021,int m=10,int d=24); //默认参数值
void show_Date(); //声明成员函数
};
|