`
sshzhangwg
  • 浏览: 70852 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

C++ 中定义和使用简单的类

 
阅读更多
#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdlib.h>
#include<cstdlib>
using namespace std;

class Date
{
public:
    Date();//构造函数
    Date(const Date&);//拷贝构造函数
    Date strToDate(string);//将string转化为Date
    void setDate(string);//设置日期
    void printDate();//打印日期
private:
    int year;
    int month;
    int day;
    bool pass;
    bool checkFormat(string);//验证日期输入格式
    void validate();//验证日期数值有效性
    bool leapYear(int);//闰年判断
};

class A 
{
private:
	int age;
public:
	int get_age();
	void set_age();
};

int A::get_age()
{
  age = 28;
  return age;
}

void A::set_age() 
{
	age = 100;
}

Date::Date()
{
    year = 2006;
    month = day = 1;
    validate();
}

Date::Date(const Date& date)
{
    year = date.year;
    month = date.month;
    day = date.day;
    pass = date.pass;
}

Date Date::strToDate(string ds)
{
    // yyyy:mm:dd
    Date d;
    d.setDate(ds);
    return d;
}

void Date::setDate(string ds)
{
    if( !checkFormat(ds) )
    {
        cout << "日期格式错误" << endl;
        pass = false;
        return;
    }
    validate();
    if(pass)
    {
        year = atoi(ds.substr(0, 4).c_str());
        month = atoi(ds.substr(5, 2).c_str());
        day = atoi(ds.substr(8, 2).c_str());
    }
}

void Date::printDate()
{
    if (pass)
    {
        cout << year << "年"
             << month << "月"
             << day << "日" << endl;
    }
    else
    {
        cout << "日期错误" << endl;
    }
}

void Date::validate()
{
    pass = false;
    if (year < 1900 || month < 1 || month > 12 || day < 1 || day > 31)
    {
        return;
    }
    if (month == 2)
    {
        if (leapYear(year))
        {
            if (day <= 29)
            {
                pass = true;
            }
            return;
        }
        else
        {
            if (day <= 28)
            {
                pass = true;
            }
            return;
        }
    }
    else if (month == 4 || month == 6 || month == 9 || month == 11)
    {
        if (month <= 30)
        {
            pass = true;
        }
        return;
    }
    else
        pass = true;
}

bool Date::leapYear(int year)
{
    if (year % 100 == 0)
    {
        if (year % 400 == 0)
        {
            return true;
        }
    }
    else
    {
        if ((year % 4) == 0)
        {
            return true;
        }
    }
    return false;
}

bool Date::checkFormat(string ds)
{
    //yyyy:mm:dd
    if (ds.length() != 10
            || ds[4] != ':'
            || ds[7] != ':')
    {
        return false;
    }

    for (int i = 0; i < (int)ds.length(); i++ )
    {
        if( i != 4 && i != 7)
        {
            if (ds[i] < '0' || ds[i] > '9')
            {
                return false;
            }
        }
    }
    return true;
}


int _tmain(int argc, _TCHAR* argv[])
{
    // 测试是否能正确设置日期
    string str;
    cout << "--TEST:请输入一个日期<yyyy:mm:dd>:" << endl;
    cin >> str;
    Date d;
    d.setDate(str);
    d.printDate();

    //测试拷贝构造函数
    cout << "--TEST:调用拷贝构造函数" << endl;
    Date dc = d;
    dc.printDate();

    //测试字符串到日期转换的函数
    cout << "--TEST:将字符串’2012:03:28‘转化为Date类型并输入" << endl;
    Date dt = d.strToDate("2012:03:28");
    dt.printDate();
	
	A a;
	a.set_age();
	cout<<"您目前的年龄是:";
	cout<<a.get_age();
	system("pause"); 
    return 0;
}
 
分享到:
评论

相关推荐

    c++ 类的声明和定义

    不能把类中的全部成员与外界隔离,一般是把数据隐蔽起来,而把成员函数作为对外界的接口。 三、成员访问限定符 在类的声明中,可以使用成员访问限定符(member access specifier)来指定成员的访问权限。私有的...

    C++ 简单类的使用

    本教程将深入探讨C++中简单类的声明与使用,帮助你理解类的基本组成结构及其用法。 一、类的定义 类是一种自定义的数据类型,它封装了数据(成员变量)和操作这些数据的函数(成员函数)。在C++中,我们可以使用`...

    C++类的定义与使用

    这是管理C++类的定义域使用的概略,里面比较详细的介绍了类的想换内容,适合初学者

    C语言调用C++类中的方法

    在编程世界中,C语言和C++是两种广泛使用的编程语言。C++是对C语言的扩展,增加了面向对象编程的支持,而C语言则以其高效、简洁和底层控制能力著称。有时,我们可能需要在C语言项目中调用C++编写的类和方法,这种...

    定义和使用分数类fraction

    1.自定义分数类fraction,使用该类可以完成分数的输入、分数的加、减、乘、除二目运算和一目减运算、分数的约分操作、分数的倒数运算、对两个分数进行六种比较运算、以及对分数的... 定义类,运算符重载、类型转换。

    C++ 包含类两个类互相调用彼此的类成员变量和方法

    1. 前置声明:在类A中使用类B的成员之前,我们需要告诉编译器类B的存在。这可以通过前置声明来实现: ```cpp class B; //前置声明 class A { B* b_ptr; // A中使用B的指针 }; ``` 2. 循环包含:如果类A包含类B的...

    用c++定义一个Book(图书)类

    定义一个Book(图书)类,在该类定义中包括: (1) 数据成员:bookname(书名)、price(价格) 和number(存书数量)。 (2) 成员函数:display()显示图书的情况;borrow()将存书数量减1。并显示当前存书数量;restore( )...

    【zfind】简单的C/C++宏定义和类定义搜索工具

    zfind是本人写的一个简单的C/C++宏定义和类定义搜索工具,z是左的意思,即本人姓氏。取此名字是因为windows下有find命令,为避免冲突。另外本工具是本人在32位WIN7环境下使用的,其余环境本人不保证兼容。 写此工具...

    c++ 中类外部定义函数

    c++ 基础 类外定义函数 调用函数 基础

    C#调用C++DLL导出类

    此外,如果C++类中有虚函数,还需要考虑多态性的问题,可能需要设计更复杂的接口。 总结来说,C#调用C++DLL中的类主要涉及以下几个步骤: 1. 在C++DLL中定义导出类及其方法。 2. 在C#中使用DllImport加载DLL,并...

    C++复数定义和重载运算符

    在C++编程语言中,复数(Complex Number)是一种数据结构,用于表示具有实部和虚部的数学复数。为了处理复数,C++标准库提供了一个名为`&lt;complex&gt;`的头文件,该文件定义了一个`std::complex`类模板,我们可以利用这...

    C++ 模板类 简单试用

    8. **在DevC++中使用模板类** - 在DevC++这样的集成开发环境中,创建并使用模板类的过程与其他IDE类似。首先,新建一个C++项目,然后在源代码文件中编写模板类的定义。接着,在主程序中实例化模板类,并调用其成员...

    C++类的定义与使用实验报告.pdf

    本实验报告主要介绍了C++类的定义与使用,通过编写一个简单的成绩管理系统,来演示类的概念、定义方式和封装等。下面是本实验报告的详细知识点总结: 一、类的概念 在C++中,类是用户定义的数据类型,用于描述一组...

    C++数据结构等价类实现

    例如,如果我们定义了一个`Student`类,其中包含姓名和年龄,我们可以基于年龄定义等价类,使得所有年龄相同的`Student`对象都在同一个等价类中。 为了方便操作等价类,我们可以创建一个`EquivalenceClass`类,它...

    QML 中使用 C++定义的枚举类型

    如果要在 QML使用 C++中定义的类型,有些数据类型是是可以直接使用的,如常见的 int,但是还有一些相对特殊的类型就需要做些特定的操作才可以使用了。 博客地址:...

    c++\实验2 C++函数的定义与使用.

    实验二C++函数的定义与使用的目的是学习函数的定义、函数的使用和函数重载,掌握函数的声明、定义和使用,理解函数参数的传递和C++系统函数的调用。 实验设备包括计算机、Windows操作系统和VC++6。 实验内容和步骤...

    c++与PLC通讯,自定义类封装

    标题中的"c++与PLC通讯,自定义类封装",意味着这个项目或教程中,开发者通过C++编写了程序来与PLC进行通讯,并且使用了面向对象编程中的类来封装相关的功能。这通常包括建立通讯协议、数据包解析和发送、错误处理等...

    C++中的类 个人总结

    13. 函数隐藏:如果派生类中定义了与基类同名但参数列表不同的函数,基类的同名函数在派生类中被“隐藏”,这意味着在派生类中直接调用该函数时,不会调用基类的版本,除非使用作用域解析运算符`::`显式指定。...

    C++ 类和对象

    在这个主题中,我们将深入探讨类与对象的概念、它们的作用以及如何在实际编程中使用它们。 类是C++中的一个关键构造,可以看作是创建对象的蓝图或模板。它定义了一组属性(数据成员)和行为(成员函数),这些属性...

    C++ DLL 导出类 示例

    确保在类定义和成员函数声明中使用了适当的导出关键字。 4. **控制台程序调用DLL**: 创建一个独立的控制台应用程序项目,用于调用DLL中的类。首先,需要包含DLL的头文件,并使用`__declspec(dllimport)`关键字...

Global site tag (gtag.js) - Google Analytics