这样的程序没有语法错误,可以工作,但不是正确工作。下面这个语句会怎么样呢?
Date oneday(-2,10,2002);
作简单的检查,如下面的代码部分。也是于事无补的。如对下面的语句仍然是无能为力的:
Date oneday(29,2,1981);
//...
class Date {
int d,m,y;
public:
Date(int dd=0,int mm=0,int yy=0)
{
if(dd>=0&&yy>=0&&mm>=0&&m<=31){//
d=dd;
m=mm;
y=yy;
}
//else
}
//...
};
//...
更何况,我们可能会需要用string来初始化,用char *指针来初始化:
string s="29/2/1981";
char *p="29/2/1981";
应该怎么办呢?我想你有必要好好审视你的初始化工作了!!!
我们来看一个设计实例:
/////////////////////////////////////
//类Date(c++)
// 用于初始化工作的例子,写于22/5/2003
///////////////////////////////////////////////////////////////
//date.h
#pragma once
#include <iostream>
using namespace std;
enum Month{jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};
class Date
{
//异常类(默认构造函数,因为我们只是抛出异常,甚至没有标志)
class Bad_date{};
int d,y;
Month m;
//静态成员变量
static Date default_date;
public:
Date(int dd=0, Month mm=Month(0), int yy=0);
Date(string s) { /* 省去内容*/}
Date(char *p) { /*省去内容*/}
~Date(void);
static void set_default(int d, Month m, int y);
int day(void) const;
Month month(void) const;
int year(void) const;
int leapyear(int y) { /*省去内容*/ return 0;}
|
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容 本站提醒:不要进行人身攻击。谢谢配合。 |