C++函数之类与对象初解4
一、常成员函数
1、定义:在类中使用关键字const说明的函数为常成员函数
2、格式:
类型说明符函数名(参数表) const;
3、注意:
(1) const是函数类型的一个组成部分,因此在函数的实现部分也要带关键字const。
(2) 常成员函数不能更新对象的数据,也不能调用非const修饰的成员
函数(静态成员函数、构造函数除外)
举例:
#include<iostream>
using namespace std ;
class Simple
{ int x, y ;
public :
void setXY ( int a, int b) { x = a ; y = b ; }
void printXY() { cout << x << "," << y<< endl ; }
void constFun ( ) const//常函数
{ x ++ ; y ++ ; }//非法
};
1、类成员冠以static声明时,称为静态成员。
2、静态数据成员为同类对象共享。
3、静态成员函数与静态数据成员协同操作。
4、静态成员不属于某一个单独的对象,而是为类的所有对象所共有
5、 静态成员函数的作用不是为了对象之间的沟通,而是为了能处理静态数据成员:
保证在不依赖于某个对象的情况下,访问静态数据成员
6、格式:
静态数据成员在定义或说明时前面加关键字static
class A
{
int n;
static int s;
};
总结:
类名::静态成员的名字
对象名.静态成员名字
对象指针->静态成员的名字
在静态成员函数内部,直接访问。
举例:
静态成员函数来访问非静态数据成员。
#include<iostream.h>
class small_cat{
public:
small_cat(double w){weight=w;total_weight+=w;total_number++;}
static void display(small_cat &w)
{cout<<"The small_cat weights "<<w.weight<<"kg\n";}
static void total_disp()
{cout<<total_number<<"small_cat total weight ";
cout<<total_weight<<" kg "<<endl;}
//静态成员函数来访问非静态数据成员。
private:
double weight;
static double total_weight; staticdouble total_number;
};
double small_cat::total_weight=0;double small_cat::total_number=0;
int main()
{ small_cat w1(0.9),w2(0.8),w3(0.7);
small_cat::display(w1);small_cat::display(w2);
small_cat::display(w3);small_cat::total_disp();
return 0;}