⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pr11009.cpp

📁 c++编程宝典源码及Quincy99编译器 是《标准C++编程宝典》电子工业出版社的光盘
💻 CPP
字号:
////////////////////////////////////////
// File Name: pr11009.cpp
////////////////////////////////////////
#include <iostream>

////////////////////////////////////////
// CustomDate class definition.
////////////////////////////////////////
class CustomDate
{
public:
    int da, yr;

    CustomDate() {}
    CustomDate(int d, int y) { da = d; yr = y;}
    void display() {std::cout << std::endl << yr << '-' << da;}
};

////////////////////////////////////////
// Date class declaration.
////////////////////////////////////////
class Date
{
    int mo, da, yr;

public:
    Date(int m, int d, int y) { mo = m; da = d; yr = y; }
    operator CustomDate(); // conversion function
};

////////////////////////////////////////
// Date class definition.
////////////////////////////////////////

// Member conversion function (CustomDate <- Date).
Date::operator CustomDate()
{
    static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    CustomDate cd(0, yr);
    for (int i = 0; i < mo-1; i++)
        cd.da += dys[i];
    cd.da += da;

    return cd;
}

////////////////////////////////////////
// A class that expects a CustomDate
// date as an initializer.
////////////////////////////////////////
class Tester {
    CustomDate cd;

public:
    explicit Tester(CustomDate c) { cd = c; }
    void display() { cd.display(); }
};

////////////////////////////////////////
// A function that expects a CustomDate
// date.
////////////////////////////////////////
void dispdate(CustomDate cd)
{
    cd.display();
}

////////////////////////////////////////
// A function that returns a CustomDate
// date.
////////////////////////////////////////
CustomDate rtndate()
{
    Date dt(10,11,88);
    return dt;  // This will be converted to CustomDate.
}

////////////////////////////////////////
// The main() function.
////////////////////////////////////////
int main()
{
    Date dt(11,17,89);
    CustomDate cd;

    // Convert Date to CustomDate via assignment.
    cd = dt;
    cd.display();

    // Convert Date to CustomDate via function argument.
    dispdate(dt);

    // Convert Date to CustomDate via initializer.
    Tester ts(dt);
    ts.display();

    // Convert Date to CustomDate via return value.
    cd = rtndate();
    cd.display();

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -