C++:构造函数的重载

构造函数的重载的判断条件是:参数的个数或者类型不同,其他要保持一样

举例说明:

方式一:在类中声明重载构造函数,在类外定义

//第一种方法: 
#include<iostream>
using namespace std;
class Date{
 public:
        Date();        //声明一个无参数的构造函数 
        Date(int y,int m,int d);//声明一个带有三个参数的构造函数 
        void showDate();
 private:
        int year;
        int month;
        int day;       
}; 
Date::Date()        //定义一个无参数的构造函数,进行初始化 
{
       year = 2000;
       month = 4;
       day = 28;
}
Date::Date(int y,int m,int d)//定义一个带有三个参数的构造函数,进行初始化 
{
       year = y;
       month = m;
       day = d;
}
inline void Date::showDate()    //定义一个显示内联函数 
{
   cout<<year<<","<<month<<","<<day<<endl;
} 
int  main()
{
  Date date1; //定义Date的对象date1,并调用无参数的构造函数 
  cout<<"Date1 output:"<<endl;
  date1.showDate(); //调用showDate()方法,显示date1的数据 
  Date date2(2015,4,18);//定义Date的对象date2,并调用有三个参数的构造函数 
  cout<<"Date2 output:"<<endl;
  date2.showDate();//调用showDate()方法,显示date2的数据
  return 0;
}

方式二:直接在类中定义重载构造函数

//第二种方法:
#include<iostream>
using namespace std;
class Date{
 public:
        Date()        //声明并定义一个无参数的构造函数
        {
          year = 2000;
          month = 4;
          day = 28;
        } 
        Date(int y,int m,int d)//声明并定义一个带有三个参数的构造函数
        {
          year = y;
          month = m;
          day = d;
        } 
        void showDate()  //声明并定义一个showDate的普通成员函数 
        {
          cout<<year<<","<<month<<","<<day<<endl;
        }
 private:
        int year;
        int month;
        int day;       
}; 
int  main()
{
  Date date1; //定义Date的对象date1,并调用无参数的构造函数 
  cout<<"Date1 output:"<<endl;
  date1.showDate(); //调用showDate()方法,显示date1的数据 
  Date date2(2015,4,18);//定义Date的对象date2,并调用有三个参数的构造函数 
  cout<<"Date2 output:"<<endl;
  date2.showDate();//调用showDate()方法,显示date2的数据
  return 0;
} 
//注意:使用无参构造函数创建对象时,应该用语句"Date date1",而不能用语句"Date date1()"
//     因为语句"Date date1()":表明一个名为date1的普通函数,此函数的返回值为Date类型 

 

原文地址:https://www.cnblogs.com/XYQ-208910/p/4912109.html