C++ 构造函数的作用

一、构造函数是类中的特殊成员函数

构造函数的作用是完成对象的初始化

给出类定义时如果类中没有编写任何构造函数,则由系统自动添加一个不带参数的构造函数。

构造函数在类体内的生命形式

类名(形参1,形参n);//也可以没有形参

构造函数的三种形式:

  1.  类名::类名(形参1,形参n):x1(形参1),xn(形参n){}
  2. 类名::类名(形参1,形参n){x1 = 形参1;xn=形参n}
  3. 类名::类名(){x1=初始化表达式1   ;xn=初始化表达式n;}

说明:

  1. 构造函数名字必须和类名相同;
  2. 构造函数定义不能有return返回值 即使为void也不可以;
  3. 另外类可以有多个构造函数,即函数重载;或重载;
  4. 构造函数的参数在排列时无顺序要求,只要保证互相对应即可;
  5. 构造函数可以使用默认参数
  6. 程序中说明一个对象时,程序自动调用构造函数来初始化对象;

    C++ 构造函数的作用

代码:

#include <iostream>
using namespace std;
class MyDate
{
public:
    MyDate(int,int,int);
    ~MyDate();//析构函数
    void printDate();

private:
    int year, month, day;
};

MyDate::MyDate(int y=1970,int m=1,int d=1)
{
    year = y; month = m; day = d;
}
void MyDate::printDate()
{
    cout << year << "/" << month << "/" << day << endl;
}
MyDate::~MyDate()
{
}
int main()
{
    //利用构造函数的重载
    //使用指针创建构造函数
    MyDate* pd = new MyDate();
    pd->printDate();
    MyDate* pd1 = new MyDate(2000);
    pd1->printDate();
    MyDate* pd2 = new MyDate(2000,6);
    pd2->printDate();
    MyDate* pd3 = new MyDate(2000,6,6);
    pd3->printDate();

    return 0;
}

 

C++ 构造函数的作用

代码2:

#include <iostream>
using namespace std;
class MyDate
{
public:
    
    MyDate(int,int,int);
    ~MyDate();//析构函数
    void printDate();
    void printDate(MyDate);


private:
    int year, month, day;
};
MyDate::MyDate(int y=1970,int m=1,int d=1)
{
    year = y; month = m; day = d;
}
void MyDate::printDate()
{
    cout << year << "/" << month << "/" << day << endl;
}
void MyDate::printDate(MyDate i)
{
    cout << i.year << "/" << i.month << "/" << i.day << endl;
}
MyDate::~MyDate()
{
}
int main()
{
    //利用构造函数的重载
    // 使用构造函数创建对象
    cout << "使用构造函数创建对象" << endl;
    MyDate d();
    MyDate d1(1998);
    MyDate d2(1998,12);
    MyDate d3(1998, 12, 13);
    //d.printDate();
    d1.printDate();
    d2.printDate();
    d3.printDate();

    //使用指针创建构造函数
    cout << "使用指针创建构造函数" << endl;
    MyDate* pd = new MyDate();
    pd->printDate();
    MyDate* pd1 = new MyDate(2000);
    pd1->printDate();
    MyDate* pd2 = new MyDate(2000,6);
    pd2->printDate();
    MyDate* pd3 = new MyDate(2000,6,6);
    pd3->printDate();

    cout << "使用构造函数创建对象数组" << endl;
    //使用构造函数创建对象数组
    //MyDate A[3];
    MyDate B[3] = { MyDate(1980),MyDate(1980,8) };
    MyDate C[3] = { MyDate(1980,9,10) };
    //A->printDate();
    B->printDate();
    C->printDate();

    return 0;
}

运行结果:

C++ 构造函数的作用

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
C++

设计并实现二维坐标系下的点的类Point,类的每个对象含有横、纵坐标。为类Point添加必要的计算函数,例如,计算给定点到(0,0)的距离,计算给定点两点间的距离,判断给定点的三个点是否能构成一个三角形等。

2023-10-4 12:07:03

C++

C++ 复制构造函数与类型转换构造函数

2023-10-4 14:08:38

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索