考试网 >> IT认证 >> 水平 >> 程序员 >> 谈谈c++的初始化工作(上)

谈谈c++的初始化工作(上)

发布时间:2006-06-28 02:35     点击:
分页:上一页  1 [2] 3 4  下一页

这样的程序没有语法错误,可以工作,但不是正确工作。下面这个语句会怎么样呢?

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;}

分页:上一页  1 [2] 3 4  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有