我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

« 1 2» Pages: ( 1/2 total )
本页主题: 【程序区活动系列】 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

ljpdxj



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 687
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-02-28
最后登陆: 2008-06-29

5come5帮你背单词 [ traffic /'træfik/ n. 交通(量) ]


【程序区活动系列】

本帖被 ljpdxj 执行加亮操作(2007-11-11)
大家知道C++ 里面类机制实现了数据和函数的封装
在初始化一个person对象后,请问用什么方法可以修改类私有数据成员?

比如下面的例子:height 初始化为100.5,在初始化zhang 后我若再想修改height值(比如改为110.5),怎么实现?
Quote:

class person
{
    private:
          float  weight;
          float  height;
          cha * ID;
    public:
          person(char *PID);
            {
                this ->ID =  PID;
                this -> weight = 170;
                this -> height = 100.5;
            }
          ~person();
    ......
}

int main()
{
    person *zhang = new person("12345");
    ..........
}



[ 此帖被ljpdxj在2007-11-11 23:29重新编辑 ]
顶端 Posted: 2007-11-11 22:55 | [楼 主]
870630456





性别: 保密 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 18
威望: 0
浮云: 1111
在线等级:
注册时间: 2006-11-03
最后登陆: 2009-10-26

5come5帮你背单词 [ slack /slæk/ a. 松弛的,松懈的,萧条的 ]


Re:【活动系列】

float person::*pp=&person::height;
zhang->*pp=110.5;
本帖最近评分记录:
  • 浮云:5(ljpdxj) 私有成员不允许直接访问:)积极参与讨论!
  • 顶端 Posted: 2007-11-11 23:05 | [1 楼]
    ljpdxj



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 687
    威望: 0
    浮云: 1108
    在线等级:
    注册时间: 2006-02-28
    最后登陆: 2008-06-29

    5come5帮你背单词 [ claw /klo:/ n. 爪 ]


    Re:Re:【活动系列】

    Quote:
    引用第1楼870630456于2007-11-11 23:05发表的 Re:【活动系列】 :
    float person::*pp=&person::height;
    zhang->*pp=110.5;

    height is private,不能直接访问


    [ 此帖被ljpdxj在2007-11-11 23:28重新编辑 ]
    顶端 Posted: 2007-11-11 23:08 | [2 楼]
    870630456





    性别: 保密 状态: 该用户目前不在线
    等级: 初出茅庐
    发贴: 18
    威望: 0
    浮云: 1111
    在线等级:
    注册时间: 2006-11-03
    最后登陆: 2009-10-26

    5come5帮你背单词 [ bake /beik/ vt. 烘烤,烧硬,焙干 ]


    hehe ;见笑了^_^
    顶端 Posted: 2007-11-11 23:10 | [3 楼]
    disneycheng



    性别: 帅哥 状态: 该用户目前不在线
    头衔: Piano Prince
    等级: 荣誉会员
    发贴: 1971
    威望: 1
    浮云: 413
    在线等级:
    注册时间: 2005-12-16
    最后登陆: 2008-06-29

    5come5帮你背单词 [ breathe /bri:ð/ v. 呼吸 ]


    呵呵,easy~~
    顶端 Posted: 2007-11-12 10:36 | [4 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ measure /'me3ə/ n. 量度,尺寸,措施,方法;vt. 量,测量;vi. 有…长(宽,高) ]


    我用这个方法
    Copy code
    void Setheight(person *p, float v)
    {
        float *pf=(float *)p;        //person的内存分布:4字节weight,4字节height,4字节ID地址
        pf++;           
        (*pf)=v;
    }

    int main()
    {
        person *zhang = new person("12345");
       
        Setheight(zhang,110.5);
    }


    不过这不是个好方法
    本帖最近评分记录:
  • 浮云:5(ljpdxj) 加起:)这个题目主要就是考查对对象空间内存镜像的 ..
  • 顶端 Posted: 2007-11-12 10:43 | [5 楼]
    disneycheng



    性别: 帅哥 状态: 该用户目前不在线
    头衔: Piano Prince
    等级: 荣誉会员
    发贴: 1971
    威望: 1
    浮云: 413
    在线等级:
    注册时间: 2005-12-16
    最后登陆: 2008-06-29

    5come5帮你背单词 [ shelter /'eltə/ n. 遮蔽物,躲避处,避难,保护;vt. 掩蔽,庇护;vi. 躲避,避难 ]


    *(((float*)zhang)+1) = 100;
    本帖最近评分记录:
  • 浮云:5(ljpdxj) 加起:)这个题目主要就是考查对对象空间内存镜像的 ..
  • 顶端 Posted: 2007-11-12 10:46 | [6 楼]
    zhd32



    性别: 帅哥 状态: 该用户目前不在线
    等级: 版主
    家族: YD一族
    发贴: 619
    威望: 0
    浮云: 543
    在线等级:
    注册时间: 2006-04-22
    最后登陆: 2009-06-22

    5come5帮你背单词 [ impost /'impəust/ n. 进口税 ]


    我来个,和大家的方法可能不同
    Copy code
    class Person {
        private:
            float weight;
            float height;
            char *ID;

        public:
            Person(char *pID) {
                this.weight    =    0f;
                this.heitht    =    0f;
                this->ID    =    pID;
            }

            ~Person(){};
    };

    typedef struct {
        float weight;
        float height;
        char *ID;
    }PersonShadow;

    int
    main() {
        Person *p = new Person("zhd32");
        PersonShadow *ps = p;
        ps->height = 100f;

        return (0);
    }

    本帖最近评分记录:
  • 浮云:5(ljpdxj) 我也给zhd32蝈蝈加起哈~
  • 顶端 Posted: 2007-11-12 11:16 | [7 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ beast /bi:st/ n. (四足)兽类,牲畜,凶残的人 ]


    我想要一个温柔一点的、面向对象的方法~
    上面三个方法都很粗暴
    顶端 Posted: 2007-11-12 11:24 | [8 楼]
    kangtalc



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 揍敌客·奇犽
    等级: 希望之光
    家族: 万人坑恋影部落
    发贴: 1723
    威望: 5
    浮云: 1113
    在线等级:
    注册时间: 2005-09-21
    最后登陆: 2008-06-29

    5come5帮你背单词 [ margin /'ma:d3in/ n. 页边,边缘,余地 ]


    在类里面加个setter方法行不?
    本帖最近评分记录:
  • 浮云:1(ljpdxj) 当然可以哈,我题目没有表述清楚:)本来是想考查上 ..
  • 顶端 Posted: 2007-11-12 12:38 | [9 楼]
    joezxd



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 我的目标是太阳
    等级: 人见人爱
    家族: 绘里香榭
    发贴: 2226
    威望: 0
    浮云: 1112
    在线等级:
    注册时间: 2006-10-07
    最后登陆: 2019-01-07

    5come5帮你背单词 [ tornado /to:'neidəu/ n. 龙卷风 ]


    Quote:
    引用第9楼kangtalc于2007-11-12 12:38发表的  :
    在类里面加个setter方法行不?


    我还是这样想的哈
    加一个改变成员数据的函数哈
    顶端 Posted: 2007-11-12 12:44 | [10 楼]
    zhd32



    性别: 帅哥 状态: 该用户目前不在线
    等级: 版主
    家族: YD一族
    发贴: 619
    威望: 0
    浮云: 543
    在线等级:
    注册时间: 2006-04-22
    最后登陆: 2009-06-22

    5come5帮你背单词 [ ranch /rænt/ n. 大牧场,大农场 ]


    Quote:
    引用第8楼yinx于2007-11-12 11:24发表的  :
    我想要一个温柔一点的、面向对象的方法~
    上面三个方法都很粗暴

    这样?
    Copy code
    class person {
    //
    public:
        setWeight(float newWeight);

    }
    顶端 Posted: 2007-11-12 13:52 | [11 楼]
    k哥



    性别: 帅哥 状态: 该用户目前不在线
    等级: 鹤立鸡群
    家族: 物电学子快快快
    发贴: 1109
    威望: 0
    浮云: 1109
    在线等级:
    注册时间: 2007-09-07
    最后登陆: 2010-09-21

    5come5帮你背单词 [ stuff /stΛf/ vt. 填满,塞满;n. 物品,物质,个人的所有物,原料,材料 ]


    Copy code

    void *p;
    *(&((person *)p->height))=110.5;

    不晓得这个可不可以?


    p.s.  LZ是计算机双学位的哇?
    顶端 Posted: 2007-11-12 14:16 | [12 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ consciousness /'konəsnis/ n. 知觉,意识,觉悟,自觉性 ]


    假设person类是别人实现的,
    我心目中的理想方法要符合两个条件:
    1、不能修改别人写的person类的代码。
    2、假若person类的代码被别人修改,我们不用改我们的代码仍可实现功能。


    基类指针可以指向派生类实体,不过派生类指针不可指向基类实体,不然就可以实现了
    顶端 Posted: 2007-11-12 14:19 | [13 楼]
    ljpdxj



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 687
    威望: 0
    浮云: 1108
    在线等级:
    注册时间: 2006-02-28
    最后登陆: 2008-06-29

    5come5帮你背单词 [ harbour /'ha:bə/ n. 港口,海港 ]


    该题记的是前几年一个公司的面试题目,主要考察的是面对对象编程中对对象内存镜像的理解和类型转换的使用~
    顶端 Posted: 2007-11-12 16:38 | [14 楼]
    « 1 2» Pages: ( 1/2 total )
    我来我网·5come5 Forum » 程序员之家

    Total 0.025676(s) query 5, Time now is:11-23 09:19, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号