cherrywang 发表于 2008-5-6 18:39

帮忙查错,谢谢!

#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();
}

sunkaidong 发表于 2008-5-6 18:42

初始化缺少构造函数

PcrazyC 发表于 2008-5-6 19:01

Date.month

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

//不关构造函数的事,有默认的,跟struct一样,结构体可以这样赋值

cherrywang 发表于 2008-5-6 19:13

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

sunkaidong 发表于 2008-5-6 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]]

PcrazyC 发表于 2008-5-6 19:39

[quote][bo]以下是引用 [un]sunkaidong[/un] 在 2008-5-6 19:24 的发言:[/bo]

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

他写的就是一个结构体,这哪像个类....

PcrazyC 发表于 2008-5-6 19:45

[quote][bo]以下是引用 [un]cherrywang[/un] 在 2008-5-6 19:13 的发言:[/bo]

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

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

那两个对普通变量是一样的,但静态变量不能用this->month

cherrywang 发表于 2008-5-6 22:11

哦,谢谢P大哥啊
本来是个结构体,我为了看起来方便写成类了,呵呵
原来在类里面不能用.啊~,长见识了
这样记得牢,哈哈

PcrazyC 发表于 2008-5-6 22:25

[quote][bo]以下是引用 [un]cherrywang[/un] 在 2008-5-6 22:11 的发言:[/bo]

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

在结构体里照样不能用结构体名加"."来表示成员,一样要用到变量名(只不过在类里将其称为对象),而不是结构体名.

sunkaidong 发表于 2008-5-6 23:08

结构体在c++primer里面可看成局域类

页: [1]

编程论坛