void Date::init(int yy, int mm, int dd)month=(mm>=1 &&mm<=12) ? mm : 1;year =(yy >= 1900 &&yy <= 2100)?yy : 1900;day = ( dd >= 1 && dd <= 31 ) ? dd : 1;void Date::print_ymd()cout << year <<"," << month <<"," << day << endl;}void Date::print_mdyOcout << month <<"." << day <<"," << year << endl;}
5 void Date::init(int yy, int mm, int dd) { month = ( mm >= 1 && mm <= 12 ) ? mm : 1; year = ( yy >= 1900 && yy <= 2100 ) ? yy : 1900; day = ( dd >= 1 && dd <= 31 ) ? dd : 1; } void Date::print_ymd() { cout << year << "-" << month << "-" << day << endl;} void Date::print_mdy() { cout << month << "-" << day << "-" << year << endl;}
int main()Datedate1,date2;创建对象,自动调用构造函数对其初始化/输出使用init赋值前对象的内容date1.print_ymd()date2.print_ymd()1900-1-1正确的赋值数据date1.init(2017,3, 13);1900-1-12017-3-13date1.print_ymd()3-13-2017date1.print_mdy();2017-1-13Ⅱ错误的赋值数据date2.init(2017,13,13);-13-2017date2.print_ymd();date2.print_mdy();return 0;6
6 int main() { Date date1, date2; //创建对象,自动调用构造函数对其初始化 date1.print_ymd(); //输出使用init赋值前对象的内容 date2.print_ymd(); date1.init(2017, 3, 13); //正确的赋值数据 date1.print_ymd(); date1.print_mdy(); date2.init(2017,13,13); //错误的赋值数据 date2.print_ymd(); date2.print_mdy(); return 0; }
注意事项在创建对象时由系统自动调用构造函数,且只执行一次;广2构造函数不能被用户调用:例:date1.Date();非法3、构造函数无返回值:I错误,需删voidvoidDate::Date(year=1900;month=1;day=1;)4、构造函数的作用是对对象进行初始化,尽量别加无关内容;5、若用户未定义构造函数,则系统会自动生成一个默认的构造函数,但函数体是空的
注意事项 1、在创建对象时由系统自动调用构造函数,且只执行一次; 2、构造函数不能被用户调用; 例:date1.Date(); -非法 3、构造函数无返回值; void Date::Date() //错误,需删void {year = 1900;month = 1;day = 1;} 4、构造函数的作用是对对象进行初始化,尽量别加无关内容; 5、若用户未定义构造函数,则系统会自动生成一个默认的构 造函数,但函数体是空的。 7
构造函数的重载重载要求:构造函数的参数个数或类型不同例10-2定义一个带重载构造函数的日期类。#include<iostream>usingnamespacestd;class Dateintday,month,year;public:Date();构造函数Ⅱ构造函数Date(int,int,int);void init(int,int,int);void print_ymd();void print_mdy(0);3;
8 二、构造函数的重载 重载要求:构造函数的参数个数或类型不同 例10-2 定义一个带重载构造函数的日期类。 #include <iostream> using namespace std; class Date { int day,month,year; public: Date(); //构造函数 Date(int,int,int); //构造函数 void init(int,int,int); void print_ymd(); void print_mdy(); };
Date:Date()year =1900;month=1;day = 1;Date::Date(int yy, int mm, int dd)init(yy,mm,dd);
9 Date::Date() { year = 1900; month = 1; day = 1; } Date::Date(int yy, int mm, int dd) { init(yy,mm,dd); }