注册 登录
编程论坛 C++教室

帮忙查错,谢谢!

cherrywang 发布于 2008-05-06 18:39, 755 次点击
#include <iostream.h>

class Date
{
public:
    int month,day,year;

    void display()
    {
        char *mon[] = {
        "一月","二月","三月","四月",
        "五月","六月","七月","八月",
        "九月","十月","十一月","十二月"
                };
        cout<<mon[Date.month]<<" "<<Date.day<<","<<Date.year;

    }
};

void main()
{
    Date birthday = {1,16,1984};
    birthday.display();
}
9 回复
#2
sunkaidong2008-05-06 18:42
初始化缺少构造函数
#3
PcrazyC2008-05-06 19:01
Date.month

//你见过这种写法吗,直接写成month或者是this->month

//不关构造函数的事,有默认的,跟struct一样,结构体可以这样赋值
#4
cherrywang2008-05-06 19:13
感谢三楼的兄弟!!
就是说在class内调用数据成员不能用“.”符号
那么直接用month和this->month有区别吗?
能否告诉我一下呢,谢谢!
#5
sunkaidong2008-05-06 19:24
结构体是可以这样,但是我觉得不是很好...一旦错位得到的结果很奇怪而且只适合变量公有的情况,因为结构体默认都是共有的..this指针..不要..或者用实例对象..都可以
#include <iostream.h>
class Date
{
private:
    int month,day,year;

    Date():month(0),day(0),year(0){}

public:    
    Date(int i,int j,int k):month(i),day(j),year(k){}
    
    void display(Date d=*new Date())
    {
        char *mon[] = {
        "一月","二月","三月","四月",
        "五月","六月","七月","八月",
        "九月","十月","十一月","十二月"
                };
        cout<<mon[d.month]<<" "<<d.day<<","<<d.year<<endl;
        
    }
};

void main()
{
    Date birthday(1,16,1984);
    birthday.display();
    birthday.display(birthday);
   
}

[[it] 本帖最后由 sunkaidong 于 2008-5-6 19:30 编辑 [/it]]
#6
PcrazyC2008-05-06 19:39
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-5-6 19:24 的发言:[/bo]

结构体是可以这样,但是我觉得不是很好


他写的就是一个结构体,这哪像个类....
#7
PcrazyC2008-05-06 19:45
[bo]以下是引用 [un]cherrywang[/un] 在 2008-5-6 19:13 的发言:[/bo]

感谢三楼的兄弟!!
就是说在class内调用数据成员不能用“.”符号
那么直接用month和this->month有区别吗?
能否告诉我一下呢,谢谢!


不是不能用".",只不过这个地方的是DATA是类名,只有对象才能用"."

那两个对普通变量是一样的,但静态变量不能用this->month
#8
cherrywang2008-05-06 22:11
哦,谢谢P大哥啊
本来是个结构体,我为了看起来方便写成类了,呵呵
原来在类里面不能用.啊~,长见识了
这样记得牢,哈哈
#9
PcrazyC2008-05-06 22:25
[bo]以下是引用 [un]cherrywang[/un] 在 2008-5-6 22:11 的发言:[/bo]

原来在类里面不能用.啊~,长见识了
这样记得牢,哈哈


在结构体里照样不能用结构体名加"."来表示成员,一样要用到变量名(只不过在类里将其称为对象),而不是结构体名.
#10
sunkaidong2008-05-06 23:08
结构体在c++primer里面可看成局域类
1