| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1172 人关注过本帖
标题:为了约束对数据对象的值做只读操作,C++采用什么方式?
只看楼主 加入收藏
lql528
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-3-14
收藏
 问题点数:0 回复次数:6 
为了约束对数据对象的值做只读操作,C++采用什么方式?
请做出简要归纳!
麻烦高人指点。
会不会的都说几句吧。
搜索更多相关主题的帖子: 对象 数据 
2008-03-19 20:26
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
有两种可行方法,一个是用const声明;另一个就是用#define定义

雁无留踪之意,水无取影之心
2008-03-20 13:05
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 
class AA
{
private:
    int a;
public AA(){a=0;}
    int getA()const{retrun a;}
};
AA* aa=new AA;
你试下aa->a=1;还成立吗?
要访问a,只能aa->getA();

Viva,espana!
2008-03-20 13:14
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
楼上的这举的什么例子啊,对象肯定不能访问私有成员,这关只读有什么关系,将成员变量设置为CONST才会变为只读,不过也有一些特殊的方式(强制转换)改变其值,这个我就不说了

[[it] 本帖最后由 PcrazyC 于 2008-3-20 13:27 编辑 [/it]]

雁无留踪之意,水无取影之心
2008-03-20 13:22
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
呵呵...楼上的楼上是常对象吧...常对象是不允许被改变得....
或者你用一个常量指针..我把楼上的改了以下..
class AA
{
public:
    int a;
public:
    AA(){a=0;}
    int getA()const
    {
        return a;
    }
};
int main()
{
    const AA* aa=new AA;
    aa->getA();
    //aa->a++;这个是不合法的
    return 1;
}

[[it] 本帖最后由 sunkaidong 于 2008-3-20 13:29 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-03-20 13:24
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
程序代码:
#include <iostream>
using namespace std;

class CT{
    int x;
public:
    const int& X;
    CT():X(x){}
    void setx(int n){x=n;}    
};

int main()
{
    CT obj;
    obj.setx(4);
    //obj.X=3; //const成员不可改变
    //obj.x=3; //private成员不可见
    //cout<<obj.x<<endl; //private成员不可见
    cout<<obj.X<<endl;
    system("pause");
}
2008-03-20 13:34
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
建议lz好好研究以下c++primer  上面讲的很不错....

学习需要安静。。海盗要重新来过。。
2008-03-20 13:43
快速回复:为了约束对数据对象的值做只读操作,C++采用什么方式?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036386 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved