c++11 类的静态成员
一、类静态成员与类非静态成员的区别
二、类静态成员的使用实例
一、类静态成员和类成员之间的区别
1.静态成员在类的所有对象中是唯一且共享的。
2.静态成员即使在类对象不存在的情况下也能使用。静态成员只要使用类名加范围解析运算符 :: 就可以访问。
3.静态成员分为静态成员函数和静态成员变量。
4.静态成员可以使用或访问其他静态成员。静态成员不能使用或访问该类的非静态成员即不能使用this指针。
5.类非静态成员可以使用静态成员。
二、类静态成员的使用实例
#include <iostream>
#include "math.h"
class coordinateSystem{
public:
coordinateSystem(double tempX,double tempY)
{
x = tempX;
y = tempY;
objectNum++;
}
void writePosition(double tempX , double tempY)
{
x = tempX;
y = tempY;
}
double distance(coordinateSystem b)
{
return sqrt((b.x - this->x)*(b.x - this->x) + (b.y - this->y)*(b.y - this->y));
}
//静态成员函数
static int retObjectNum1(){return objectNum;}
int retObjectNum2(){return objectNum;}
private:
double x;
double y;
//静态成员变量
static int objectNum;
};
int coordinateSystem::objectNum=0;
int main()
{
// 静态成员即使在类对象不存在的情况下也能使用。静态成员只要使用类名加范围解析运算符 :: 就可以访问。
std::cout << "now retObjectNum1="<<coordinateSystem::retObjectNum1()<<std::endl;
//静态成员在类的所有对象中是唯一且共享的。
coordinateSystem a1(1,0);
std::cout << "now retObjectNum1="<<coordinateSystem::retObjectNum1()<<std::endl;
std::cout << "now retObjectNum1="<<a1.retObjectNum1()<<std::endl;
std::cout << "now retObjectNum2="<<a1.retObjectNum2()<<std::endl;
coordinateSystem a2(8,9);
std::cout << "now retObjectNum1="<<a1.retObjectNum1()<<std::endl;
std::cout << "now retObjectNum1="<<a2.retObjectNum1()<<std::endl;
}
返回值:
now retObjectNum1=0
now retObjectNum1=1
now retObjectNum1=1
now retObjectNum2=1
now retObjectNum1=2
now retObjectNum1=2