首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 类定义中,不是不分配空间和初始化么?看着个例子 [已结帖,结帖人:jiwei325]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiwei325
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-23 15:47:19 楼主
    #include <iostream.h>
    #include <string.h>
    class StudentID
    {
    public:
    StudentID(int id)
    {
    value=id;
    cout < <"assigning student id:" < <value < <endl;
    }
    ~ StudentID()
    {
    cout < <"destructing id" < <value < <endl;
    }
    protected:
    int value;
    }
    ;

    class Student
    {
    public:
    Student(char *pname,int ssID=0):id(ssID)//为什么要对ssID初始化,类定义不是不分配空间和初始化么
    {
    cout < <"constructing student" < <pname < <endl ;
    strncpy(name,pname,sizeof(name));
    name[sizeof(name)-1]='\0';
    }
    protected :
    char name[20] ;
    StudentID id;
    }
    ;
    void main()
    {
    Student s("randy",9818);
    Student t("Jenny");
    }

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chlaws
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 15:54:391楼 得分:5
    类定义中,不是不分配空间和初始化么?
    >
    怎么就不能分配和初始化了?
    对私有数据成员初始化是很正常的事
    分配空间更正常了,例有一char* 成员,在初始化时根据指定大小分配空间
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xqls_xqls
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:01:122楼 得分:0
    调用类Student的构造函数构造对象id,对角id.value = ssID
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hmsuccess
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:03:203楼 得分:0
    char name[20];//分配空间
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hmsuccess
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:08:354楼 得分:5
    初始化更正常了,如

    C/C++ code
    class Test { private: static const int numT = 100; int array[numT]; };

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hmsuccess
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:13:565楼 得分:0
    Student(char *pname,int ssID=0):id(ssID)//为什么要对ssID初始化,类定义不是不分配空间和初始化么?

    采用成员初值列是保证对象id使用之前已初始化
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • richbirdandy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 18:37:166楼 得分:0
    google 初始化成员列表
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yshuise
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 20:33:107楼 得分:0
    这只是类,只是一形式,当它成为一个对象的时候才成为事实。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhongyunde
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 20:37:548楼 得分:0
    分配空间 在创建对象的时候才需要
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lw1a2
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 20:42:199楼 得分:5
    Student s("randy",9818); //这时候才初始化
    Student t("Jenny");  //这时候才初始化
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kong_ling
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 20:44:3310楼 得分:0
    引用楼主 jiwei325 的帖子:
    Student(char *pname,int ssID=0):id(ssID)//为什么要对ssID初始化,类定义不是不分配空间和初始化么…

    用成员初始化列表来初始化ssID不是发生在类定义时啊。定义Student类对象时才会调用Student构造函数,才对ssID进行的初始化。
    类定义时只是定义了这个函数,并没有调用它
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yshuise
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 20:45:1511楼 得分:5
    C/C++ code
    class Test { private: static const int numT = 100; int array[numT]; };

    静态变量不属于对象。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kong_ling
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 20:46:5212楼 得分:0
    囧,被lz忽悠了,是对Student成员变量id初始化,不是对ssID初始化吧~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hmsuccess
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 22:10:2113楼 得分:0
    引用 11 楼 yshuise 的回复:
    C/C++ codeclass Test
    {
    private:
      static const int numT = 100;
      int array[numT];
    };


    静态变量不属于对象。

    是的,静态变量属于类
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • budTang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 22:20:2014楼 得分:0
    它这不只是提供了对类成员初始化的方式吗?并没有实际用某个值去初始化阿
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuhaozx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 23:00:1315楼 得分:0
    1、
        类定义中可以对私有数据成员初始化;
        可以分配空间;int iTmp[10]
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved