常对象

来源:互联网 发布:桌面笔记软件 编辑:程序博客网 时间:2024/04/20 12:39

源代码:

<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.常成员函数不能调用另外一个非常成员函数。

0 0
原创粉丝点击