Programming 版 (精华区)

发信人: JJason (总统~~), 信区: Programming
标  题: [合集]c++的问题
发信站: 哈工大紫丁香 (2003年03月10日10:33:37 星期一), 站内信件


────────────────────────────────────────
 godkiller (一天到晚游泳的鱼)         于 2002年12月19日15:37:10 星期四 说道:

这样定义一个class
class X
{
    int i;
public:
    int j;
    static X x;
public:
    X(int ii=0,int jj=0):i(ii),j(jj){}
    void f(){i=x.i;j=x.j;}
};
X X::x(1,2);
在X::f()中可以访问x的私有数据成员

────────────────────────────────────────
 JJason (酱牛肉)                      于 2002年12月19日16:04:32 星期四 说道:

【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: 这样定义一个class
: class X
: {
:     int i;
: public:
:     int j;
:     static X x;
      ~~~~~~~~~~~这样,也可以?
: public:
:     X(int ii=0,int jj=0):i(ii),j(jj){}
:     void f(){i=x.i;j=x.j;}

────────────────────────────────────────
 charlie (飞龙在天)                   于 2002年12月19日16:28:20 星期四 说道:

这样好像循环定义了啊
只有指针可以如此吧?
【 在 JJason (酱牛肉) 的大作中提到: 】
: 【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: : 这样定义一个class
: : class X
: : {
: :     int i;
: : public:
: :     int j;
: :     static X x;
:       ~~~~~~~~~~~这样,也可以?
: : public:

────────────────────────────────────────
 godkiller (一天到晚游泳的鱼)         于 2002年12月19日16:39:20 星期四 说道:

right in vc++6 and dev-c++
【 在 JJason (酱牛肉) 的大作中提到: 】
: 【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: : 这样定义一个class
: : class X
: : {
: :     int i;
: : public:
: :     int j;
: :     static X x;
:       ~~~~~~~~~~~这样,也可以?
: : public:

────────────────────────────────────────
 charlie (飞龙在天)                   于 2002年12月19日16:44:48 星期四 说道:

不明白了
【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: right in vc++6 and dev-c++
: 【 在 JJason (酱牛肉) 的大作中提到: 】
: :       ~~~~~~~~~~~这样,也可以?

────────────────────────────────────────
 xceman (辉->雪狼*遥望北方)           于 2002年12月19日17:51:33 星期四 说道:

wrong in vc7
【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: right in vc++6 and dev-c++
: 【 在 JJason (酱牛肉) 的大作中提到: 】
: :       ~~~~~~~~~~~这样,也可以?

────────────────────────────────────────
 coolren (茄子)                       于 2002年12月19日22:20:47 星期四 说道:

 我试了一下,开始以为循环定义只可以对指针和引用
 没想到static也可以!!
 但是访问起来总是有问题,也不能够在构造函数中初始化
 在 f()中也访问不了
 BCB5.0
【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: 这样定义一个class
: class X
: {
:     int i;
: public:
:     int j;
:     static X x;
: public:
:     X(int ii=0,int jj=0):i(ii),j(jj){}
:     void f(){i=x.i;j=x.j;}

────────────────────────────────────────
 godkiller (一天到晚游泳的鱼)         于 2002年12月20日08:51:50 星期五 说道:

这是the c++ programming language中的一个例子的简略版
我也不知道为什么
【 在 charlie (飞龙在天) 的大作中提到: 】
: 不明白了
: 【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: : right in vc++6 and dev-c++

────────────────────────────────────────
 godkiller (一天到晚游泳的鱼)         于 2002年12月20日08:52:26 星期五 说道:

静态变量当然不能在构造函数中初始化了
【 在 coolren (茄子) 的大作中提到: 】
:  我试了一下,开始以为循环定义只可以对指针和引用
:  没想到static也可以!!
:  但是访问起来总是有问题,也不能够在构造函数中初始化
:  在 f()中也访问不了
:  BCB5.0
: 【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: : 这样定义一个class
: : class X
: : {
: :     int i;
: : public:

────────────────────────────────────────
 zhangyan (AIX怎么就这么脆弱呢?)     于 2002年12月20日09:41:03 星期五 说道:

编译器在编译一个class的时候
需要知道所编译的类的size
这也就意味着,要知道每一个member的size
然后再经过alignment,求得class的size
在这里
static member并不会占用class的空间
static member并不分配在类中
所以可以编译
【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: 这样定义一个class
: class X
: {
:     int i;
: public:
:     int j;
:     static X x;
: public:
:     X(int ii=0,int jj=0):i(ii),j(jj){}
:     void f(){i=x.i;j=x.j;}

────────────────────────────────────────
 gunslover (how long how long dire straits)  于 2002年12月20日10:22:35 星期五 说道:

虽然可以 编译
但还是不太和逻辑
【 在 zhangyan (AIX怎么就这么脆弱呢?) 的大作中提到: 】
: 编译器在编译一个class的时候
: 需要知道所编译的类的size
: 这也就意味着,要知道每一个member的size
: 然后再经过alignment,求得class的size
: 在这里
: static member并不会占用class的空间
: static member并不分配在类中
: 所以可以编译
: 【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: : 这样定义一个class
: : class X

────────────────────────────────────────
 zhangyan (AIX怎么就这么脆弱呢?)     于 2002年12月20日10:25:05 星期五 说道:

怎么不符合逻辑了?
【 在 gunslover (how long how long dire straits) 的大作中提到: 】
: 虽然可以 编译
: 但还是不太和逻辑
: 【 在 zhangyan (AIX怎么就这么脆弱呢?) 的大作中提到: 】
: : 编译器在编译一个class的时候
: : 需要知道所编译的类的size
: : 这也就意味着,要知道每一个member的size
: : 然后再经过alignment,求得class的size
: : 在这里
: : static member并不会占用class的空间
: : static member并不分配在类中

────────────────────────────────────────
 godkiller (一天到晚游泳的鱼)         于 2002年12月20日13:45:58 星期五 说道:

那为什么在X中可以访问x的私有变量
【 在 zhangyan (AIX怎么就这么脆弱呢?) 的大作中提到: 】
: 编译器在编译一个class的时候
: 需要知道所编译的类的size
: 这也就意味着,要知道每一个member的size
: 然后再经过alignment,求得class的size
: 在这里
: static member并不会占用class的空间
: static member并不分配在类中
: 所以可以编译
: 【 在 godkiller (一天到晚游泳的鱼) 的大作中提到: 】
: : 这样定义一个class
: : class X

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.688毫秒