您的位置:首页 > 其它

常对象

2016-03-24 21:05 148 查看
源代码:

<span style="font-size:14px;">#include<iostream>
using namespace std;
class Information
{
public:
Information(int n);
void Information_cout()const;
void Information_modify()const;
private:
mutable double number;
} ;

Information::Information(int n)
{
number=n;
}

void Information::Information_cout()const
{
cout<<number<<endl<<endl;
}
void Information::Information_modify()const
{
number=3000;
}

class Information2
{
public:
Information2(int h);
void Information2_cout();
private:
const double number2;
};

Information2::Information2(int h):number2(h){}//Information2::Information2(int h)  {number2=h;}

void Information2::Information2_cout()
{
cout<<number2<<endl<<endl;
}

int main()
{
const Information p1(1000);
p1.Information_cout();

Information2 p2(2000);
p2.Information2_cout();

const Information p3(10000);
cout<<"比较结果:"<<endl;
p3.Information_cout();
p3.Information_modify();
p3.Information_cout();

return 0;
}</span>


运行结果:



总结:

1.常对象指的是数据不能被改变的对象;

2.常对象只能调用该对象的常成员函数,而不能调用该对象的普通成员函数(这里要出去系统自动调用的构造函数和析构函数),即对于常对象而已,只能访问对象中的常量(这里表示的是常变量和常成员函数)

3.常成员函数指的是该函数只能调用该对象中的数据,而不能够改变该对象中的数据;常成员函数在声明和定义都要加上const,而在引用的时候可以不加;

4.常数据成员构造函数的格式只能是如此源代码所示(即构造函数只能用参数初始化表对常数据成员进行初始化)假如换成:Information2::Information2(int h) {number2=h;}

是编译不了的;

5.有一种特殊处理数据的方式,就是在数据前面声明mutable,这样数据就可以被改变了;

6.常成员函数不能调用另外一个非常成员函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: