12.2构造函数的必要性类的封装性,就体现在一部分数据是不能让外界访问的。所以不允许直接在非成员函数中访问类对象的保护或私有数据成员只能通过类的成员函数来初始化类对象,因为,只有成员函数可以访问保护和私有数据成员
• 类的封装性,就体现在一部分数据是不能让 外界访问的。 • 所以不允许直接在非成员函数中访问类对象 的保护或私有数据成员。 • 只能通过类的成员函数来初始化类对象。 • 因为,只有成员函数可以访问保护和私有数 据成员
12.3构造函数的使用构造函数(constructor)用于对对象进行初始化的一个或一组函数。声明格式<类名>(<参数表>);C++规定,构造函数与类名相同,在建立对象时,自动调用构造函数初始化,每个对象创建时,都要调用该类的构造函数
• 构造函数(constructor) 用于对对象进行初始化的一个或一组函数。 • 声明格式: <类名>(<参数表>) ; • C++规定,构造函数与类名相同。 • 在建立对象时,自动调用构造函数初始化。 • 每个对象创建时,都要调用该类的构造函数
12.3构造函数的使用,构造函数是特殊的公有成员函数,其特征如下√1.函数名与类名相同√2.构造函数无返回值类型,构造函数的函数体中不允许返回值。V3.在新的对象被创建时,自动调用该对象所属的类的构造函数。√4.构造函数可以重载,提供初始化对象的不同方法。V5.构造函数应为公有函数,即可以作为内联函数在类内定义,也可以在类外定义
• 构造函数是特殊的公有成员函数,其特征如下: ✓ 1.函数名与类名相同。 ✓ 2.构造函数无返回值类型,构造函数的函数体中不 允许返回值。 ✓ 3.在新的对象被创建时,自动调用该对象所属的类 的构造函数。 ✓ 4.构造函数可以重载,提供初始化对象的不同方法。 ✓ 5.构造函数应为公有函数,即可以作为内联函数在 类内定义,也可以在类外定义
12.3构造函数的使用例12-3:在类内定义一个构造函数class Deskpublic:Desk()川构造函数定义1weight = 10;自动调用Desk(),high = 5;创建对象并初始化width = 5;length = 5;protected :void fn()int weight ;int t high;Deskda;intwidth ;7intlength ;1 ;
例12-3:在类内定义一个构造函数 class Desk { public: Desk( ) //构造函数定义 { weight = 10; high = 5; width = 5; length = 5; } protected: int weight ; int high ; int width ; int length ; } ; void fn( ) { Desk da ; } 自动调用Desk( ), 创建对象并初始化
12.3构造函数的使用例12-4:定义一个带构造函数的日期类#include<iostream>using namespace std;class Date1int day,month,year;public:Date();川构造函数,无返回值类型void对数据成员赋值init(int,int,int);voidprint_ymdO;void print_mdy();构造函数可以放在类1:的外部定义Date..Dateyear=1900;month=1;day=1
例12-4:定义一个带构造函数的日期类 #include <iostream> using namespace std; class Date { int day,month,year; public: Date(); //构造函数,无返回值类型 void init(int,int,int); //对数据成员赋值 void print_ymd(); void print_mdy(); }; Date::Date( ) { year = 1900; month = 1; day = 1; } 构造函数可以放在类 的外部定义