6.2.1构造函数

一、构造函数
1、构造函数的作用

在对象被创建时使用特定的值构造对象,即把对象初始化为一个特定的状态。

2、构造函数是一种特殊的成员函数,

它不需用户调用,而是在对象创建时由系统自动调用

3、如果程序中未声明,则系统自动产生一个默认形式的构造函数,用于创建对象,
4、默认构造函数形式:

类名::类名(){}
默认构造函数是一个空函数

允许内联、重载、默认形参值函数
  • 函数名与类名相同
  • 没有返回值
  • 声明为共有函数
#include <iostream>
using namespace std;
class Date {
public:
Date(); // 无参构造函数
void setDate(int y,int m,int d);
void showDate();
private:
int year, month, day; };
Date::Date() // 构造函数的实现
{ year=0; month=0; day=0; }

函数重载

Date(); // 无参构造函数1
Date(int y,int m,int d);

默认形参值

Date(int y=0,int m=0,int d=0) 
{ year=y; month=m; day=d; }
注意
  • 一个类可定义多个函数
  • 可用重载
  • 对每一个对象来说,建立对象值、只执行其中一个构造函数
利用构造函数创建对象
1、一般形式

类名 对象名[(实参表)];

  • 类名与构造函数名相同
  • 实参表提供实际参数
2、通过指针和new运算符动态建立对象

类名*指针变量=new类名[(实参表)];
例如:

Date*d1=new Date(1998,4,28);
d1->setdate(2020,3,10);
Box*pt;
pt=new Box;
pt=new Box(12,13,14);
delete pt;

void main()
{
Date *date1;
date1=new Date(1998,4,28);
// 以上两条语句可合写成:
// Date *date1=new Date(1998,4,28);
cout<<"Date1 output1:"<<endl;
date1->showDate();
date1->setDate(2002,11,14);
cout<<"Date1 output2:"<<endl;
date1->showDate();
delete date1; }
构造函数初始化
1.使用函数体
class Date
{
int d, m, y;
public:
Date(int dd, int mm, int yy) {
d=dd;
m=mm;
y=yy; }
Date(int dd, int mm)
{
d=dd;
m=mm;
} }
2、使用初始化列表

格式:
funname(参数列表):初始化列表
{ 函数体,可以为空}
形式:
成员名1(形参名1),成员名2(形参名2),成员名n(形参名n)

在这里插入代class Date
{
int d, m, y;
public:
Date(int dd, int mm, int yy)d(dd),m(mm),y(yy)
{ }
Date(int dd, int mm) : d(dd),m(mm)
{ }
};码片
注意

必须使用初始化的情况:

  • 数据成员为常量
  • 数据成员为引用类型
  • 数据成员为无参构造函数的类的对象

在这里插入图片描述
在这里插入图片描述

类成员的初始化顺序与声明顺序有关。
构造函数一般被定义为公有成员
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值