常成员函数

C++:常对象成员和常成员函数

人盡茶涼 提交于 2020-03-04 05:25:04
5-1 常对象成员和常成员函数 例子: 常对象成员: 常成员函数: 上图:常成员函数中为什么不能改变数据成员的值? 上图:编译后this指针是用const指针修饰的,成了一个常指针,通过常指针改变指针指向的数据是不被允许的; 上图中:互为重载,但不推荐这样使用; 上图:调用的是不带const的函数; 5-2 常对象成员和常成员函数实践 Coordinate.h # include <iostream> using namespace std ; class Coordiante { public : Coordiante ( int x , int y ) ; ~ Coordiante ( ) ; void setX ( int _x ) ; //第一个参数(this指针)不加也行(默认的),之所以报错的原因是m_coora只读,而this指针可读可写 void setY ( int _y ) ; int getX ( ) const ; //m_coora只读,而this指针可读可写,所以加const修饰就只读了 int getY ( ) const ; //const修饰之后成为常成员函数;set函数不能加const private : int m_iX ; //只有类里的成员函数才能访问private的成员? int m_iY ; } ; Coordinate.cpp #

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

核能气质少年 提交于 2020-01-04 07:09:22
静态成员:不管这个类创建了多少个对象,静态成员在内存中只保留一份,静态成员用来解决同一个类中不同对象之间数据成员和函数的共享问题。 1、静态成员函数是用关键词static声明的成员函数,它属于整个类而并不属于类的某个对象。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。 由于静态函数是独立于类对象而存在的,因此静态成员函数中没有this指针。所以静态成员函数不可以直接访问类中的非静态成员,但是可以直接访问静态成员。 若要访问非静态成员时,必须通过参数传递的方式得到相应的对象,再通过对象来访问。 class B{ private: int x; int y; static int count; public: B():x(0), y(0){ count++; } B(int xx, int yy):x(xx), y(yy){ count++; } static int getObjCount(); }; int B::count = 0; int B::getObjCount(){ return count; } int main() { cout << B::getObjCount() << endl; B b1;