【C++】构造函数

来源:互联网 发布:java分布式文件系统 编辑:程序博客网 时间:2024/05/16 17:58

我们在定义一个对象的同时想给它的数据成员赋值,这时候就要用到构造函数,通过构造函数来实现对象的初始化。


构造函数是类的成员函数的一种,它有一些自己的特点区别于一般函数。


1:构造函数的名称必须和类名一致。

2:构造函数没有返回值,不能用void来修饰。

3:构造函数不能直接调用,它由编译器在创建对象时自动调用。

4:用户可以自己定义构造函数,如果没有,系统会提供一个默认的空构造函数。

5:用户可以定义多个构造函数(参数类型或个数不同),也叫构造函数的重载。


下面是如何使用构造函数:

#include <iostream.h>    //输入输出流头文件class Date               //Date类{public://构造函数//当没有对数据对象赋值时,默认年月日都为1Date(){year = 1;month = 1;day = 1;}Date(int y,int m,int d)   //通过用户来赋值{year = y;month = m;day = d;}void print() const;private://数据成员int year;int month;int day;};void Date::print() const{cout<<year<<"-"<<month<<"-"<<day<<endl;  //格式化输出year-month-day对应的年月日}int main(){Date national_day(1949,10,1);<span style="white-space:pre"></span>//对象初始化时通过构造函数为变量赋值 Date defaultday=Date();//对象初始化时使用构造函数的默认值 national_day.print();//结果为:1994-10-1defaultday.print();//结果为:1-1-1return 0;}

下面的例子是添加了有默认形参值得构造函数:

#include <iostream.h>    //输入输出流头文件class Date               //Date类{public://构造函数Date(int y=1,int m=1,int d=1)   //当没有对数据对象赋值时,默认年月日都为1{year = y;month = m;day = d;}void print() const;private://数据成员int year;int month;int day;};void Date::print() const{cout<<year<<"-"<<month<<"-"<<day<<endl;  //格式化输出year-month-day对应的年月日}int main(){Date national_day(1949,10,1);<span style="white-space:pre"></span>//对象初始化时通过构造函数为变量赋值 Date defaultday=Date();//对象初始化时使用构造函数的默认形参值 national_day.print();//结果为:1994-10-1defaultday.print();//结果为:1-1-1return 0;}

两个程序相同的运行结果:


1 0
原创粉丝点击