现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

类的常类型

2012-08-24 03:35 工业·编程 ⁄ 共 1346字 ⁄ 字号 暂无评论

一、常类型的引入
      是为了既保证数据共享又防止数据被改动。
 
二、常数据成员
      定义格式:
            const 数据类型 数据成员名;
      说明:
            1. 常数据成员只能通过构造函数用初始化列表进行初始化,而任何其他函数都不能对该成员赋值;
    
三、常成员函数
      说明格式:
            类型说明符 函数名(参数表)const;
      说明:
            1. 在函数实现的部分要带关键字const(因为const是函数类型的一个组成部分);
            2. 关键字const可以被用于参与对重载函数的区分;
            3. 常成员函数不能更新对象的数据成员,也不能调用该类中的普通成员函数,这就保证了在常成员函数中绝对不会更新数据成员的
                值;
            4. 常成员函数是常对象惟一的对外接口,这是C++从语法机制上对常对象的保护。
   
四、常对象
      说明形式:
            类名 const 对象名[(参数表)];                 或                   const 类名 对象名[(参数表)];
      说明:
            1. 在定义对象时,必须进行初始化,而且不能被更新;
            2. 常对象只能调用它的常成员函数,而不能调用普通的成员函数;
            3. c++不允许直接或间接地更改常对象的数据成员。
 
五、程序示例
#include <iostream>     
using namespace std;  
   
class KSample 

private: 
    const int n;                    //定义常数据成员 
public: 
    int m; 
    KSample(int i, int j):n(j)     //常数据成员只能用初始化列表进行初始化 
    { 
        m = i; 
    } 
    void Display(void);            //声明普通成员函数Display(void) 
    void Display(void) const;      //声明常成员函数Display(void) 
}; 
 
void KSample::Display() 

    cout<<"m1 = "<<m<<endl; 
    cout<<"n1 = "<<n<<endl; 

 
void KSample::Display() const  

    cout<<"m2 = "<<m<<endl; 
    cout<<"n2 = "<<n<<endl; 

 
int main() 

    KSample a(30,40); 
    a.Display(); 
    const KSample b(10,20);       //定义常对象 
    b.Display(); 
    return 0; 

           程序结果:
                 m1 = 30
                 n1  = 40
                 m2 = 10
                 n2  = 20

【上篇】
【下篇】

给我留言

留言无头像?