C++中const:常引用,常对象,常对象成员

来源:互联网 发布:ntfs for mac 14破解 编辑:程序博客网 时间:2024/04/29 07:28
C++中const:常引用,常对象,常对象成员
Last Edit 2013/11/24
1、常引用 (类型名 &引用名
   
#include <IOSTREAM>using namespace std;class Data{public:int x;public:Data(int a){x=a;}void show(const Data & d);  //常对象引用};void Data::show(const Data & d){cout<<d.x<<endl;        //d.x++ ;    //将报错,如果对x的值进行改变的话}void main(){Data d(3);d.show(d);}
2、常对象 (类名 const 对象名 或者 const 类名 对象名
     定义常对象时必须对其进行初始化,并且不能改变其数据成员的值      
Data const D(1);//形式1const Data D(1)://形式2
3、类的常成员函数:常成员函数的声明形式为:类型说明符 函数名(参数表) const;
     a.常成员函数在声明和实现时都要带const关键字
     b.常成员函数不能修改对象的数据成员,也不能访问类中没有用const声明的非常成员函数
     c.常对象只能调用它的常成员函数,不能调用其他的普通成员函数
     d.const关键字可以被用于参与对重载函数的区分
下面分别一一说明:
#include <IOSTREAM>using namespace std;class Data{public:int x;public:Data(int a){x=a;}void show(const Data & d);//常引用void show() const;        //常函数,只能调用常函数,不能调用非常函数。void print();             //非常函数};void Data::show(const Data & d){cout<<d.x<<endl;print();}void Data::show() const{cout<<x<<endl;//print();  //报错,编译不通过。}void Data::print(){cout<<"hello world"<<endl;}void main(){Data d(3);      const Data c(4);d.show(d);//c.show(c) //报错,常对象只能调用常函数    c.show();}
4、类的常数据成员
 类的数据成员也可以是常量和常引用,用const声明的数据成员就是常数据成员。在任何函数中都不能对常数据成员赋值构造函数对常数据成员初始化,只能通过初始化列表。
       #include<iostream>       using namespace std;       class A        {       public:                       A(int i);                       void print();                       const int& r;          private:                       const int a;                       static const int b;  //静态常数据成员       };      const int A::b=20;        A::A(int i):a(i),r(a) {}       void A::print()       {                         cout<<a<<":"<<b<<":"<<r<<endl;        }

要是不对r进行初始化,则会出现如下错误。