注册 登录
编程论坛 C++教室

为了约束对数据对象的值做只读操作,C++采用什么方式?

lql528 发布于 2008-03-19 20:26, 1172 次点击
请做出简要归纳!
麻烦高人指点。
会不会的都说几句吧。
6 回复
#2
PcrazyC2008-03-20 13:05
有两种可行方法,一个是用const声明;另一个就是用#define定义
#3
zkkpkk2008-03-20 13:14
class AA
{
private:
    int a;
public AA(){a=0;}
    int getA()const{retrun a;}
};
AA* aa=new AA;
你试下aa->a=1;还成立吗?
要访问a,只能aa->getA();
#4
PcrazyC2008-03-20 13:22
楼上的这举的什么例子啊,对象肯定不能访问私有成员,这关只读有什么关系,将成员变量设置为CONST才会变为只读,不过也有一些特殊的方式(强制转换)改变其值,这个我就不说了

[[it] 本帖最后由 PcrazyC 于 2008-3-20 13:27 编辑 [/it]]
#5
sunkaidong2008-03-20 13:24
呵呵...楼上的楼上是常对象吧...常对象是不允许被改变得....
或者你用一个常量指针..我把楼上的改了以下..
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]]
#6
leeco2008-03-20 13:34
程序代码:

#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");
}
#7
sunkaidong2008-03-20 13:43
建议lz好好研究以下c++primer  上面讲的很不错....
1