12.3构造函数的使用voidDate::init(intyy,intmm,intdd)//对数据成员赋值month=(mm >= 1&& mm<= 12)?mm: 1;year =(yy >= 1900 && yy <= 2100) ? yy: 1900;day = (dd >= 1 && dd <= 31)?dd : 1;1void Date:print_ymd()cout << year <<"_" << month <<"_" << day << endl;1void Date::print_mdy()1cout<< month<<"_" << day<<"_" <<year <<endl;1
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; }
1900-1-112.3构造函数的使用1900-1-12017-3-133-13-2017void main()2017-1-13{1-13-2017Date 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(0)date2.print_mdy();1J
void 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(); }
12.3构造函数的使用ch12-1.cpp:在类外部定义构造函数#include<iostream>using namespacestd;class Desk{public:Desk() ;川构造函数声明private:int weight, high, width, length ;1 ;class StoolYpublic:Stool() ;/构造函数声明private:int weight, high, width, length ;1;
ch12-1.cpp:在类外部定义构造函数 #include <iostream> using namespace std; class Desk { public: Desk( ) ; //构造函数声明 private: int weight, high, width, length ; } ; class Stool { public: Stool( ) ; //构造函数声明 private: int weight, high, width, length ; } ;
12.3构造函数的使用ch12-1.cpp:在类外部定义构造函数Desk::Desk()//构造函数定义weight = 10; high = 5; width = 5; length = 5 ;cout<<weight<<" "<<high<<"" <<width<<"" <<length<<endlStool::Stool()//构造函数定义weight = 6; high = 3; width = 3; length = 3 ;cout<<weight<<" " <<high<<" " <<width<<" " <<length<<endl;void fn() (Deskda;//自动调用Desk()Stool//自动调用Stool()sa;void main() (fn(); }
ch12-1.cpp:在类外部定义构造函数 Desk:: Desk( ) //构造函数定义 { weight = 10; high = 5; width = 5; length = 5 ; cout<<weight<<" " <<high<<" " <<width<<" " <<length<<endl; } Stool:: Stool( ) //构造函数定义 { weight = 6; high = 3; width = 3; length = 3 ; cout<<weight<<" " <<high<<" " <<width<<" " <<length<<endl; } void fn( ) { Desk da; //自动调用Desk( ) Stool sa; //自动调用Stool( ) } void main( ) { fn( ); }
12.3构造函数的使用:主函数main()开始运行时,调用fn()函数fn()函数在创建Desk对象da和Stool对象sa时,分别调用了二者的构造函数,da和sa对象空间中,依次存放weight、high、width和length的值。da1055内存中空间分5配图6sa333
• 主函数main( )开始运行时,调用fn( )函数。 • fn( )函数在创建Desk对象da和Stool对象sa 时,分别调用了二者的构造函数。 • da和sa对象空间中,依次存放weight、high、 width和length的值。 10 5 5 5 6 3 3 3 da sa 内存中空间分 配图