常成员函数和静态成员函数

常成员函数,声明方式:类型标识符 函数名(形参列表)const 
类的成员函数的一种类型,由于const是函数类型,故在函数实现的时候也应带上const关键字。常成员函数具有以下特殊性质 
  • 不能更新成员变量的值(静态成员变量除外)
  • 不能调用除了常成员函数以外的成员函数
  • 可以用来区分函数重载
  • 类的常对象只能访问类的常成员函数

class A{

private:  
    int w, h;  
public:  
    int getValue()const;  
    int getValue();  
    A(int x, int y):w(x), h(y){}  
    A(){}  
    ~A(){}  
};  
int A::getValue()const{  
    return w*h;  
}  
int A::getValue(){  
    return w+h;  
}  
int main()  
{  
    const A a(1, 2);  
    A c(1,2);  
    cout << a.getValue() << endl;   //调用const成员函数  
    cout << c.getValue() << endl;   //调用非const成员函数  
    return 0;  
}  


静态成员函数 ,声明方式:static 类型标识符 函数名(形参列表) 
静态成员函数只能被定义一次,由类的全体对象共用,属于类的行为,与具体对象无关,而本身也具有如下的特殊性质 

  • 不可以直接访问类中的非静态成员变量和非静态成员函数,只能通过形参传入的对象名来进行访问。
  • 不可以 在函数实现时加static关键词,否则会出错
  • 静态成员函数不含this指针,可以在类外通过“类名::函数名”的方式直接调用。也可以通过对象调用
  1. class B{  
  2. private:  
  3.     int x;  
  4.     int y;  
  5.     static int count;  
  6. public:  
  7.     B():x(0), y(0){  
  8.         count++;  
  9.     }  
  10.     B(int xx, int yy):x(xx), y(yy){  
  11.         count++;  
  12.     }  
  13.     static int getObjCount();  
  14. };  
  15. int B::count = 0;  
  16. int B::getObjCount(){  
  17.     return count;  
  18. }  
  19. int main()  
  20. {  
  21.     cout << B::getObjCount() << endl;  
  22.     B b1;  
  23.     B b2(10, 20);  
  24.     cout << b1.getObjCount() << endl;  
  25.     cout << b2.getObjCount() << endl;  
  26.     cout << B::getObjCount() << endl;  
  27.     return 0;  
  28. }  


  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值