对C++中的类的静态数据成员和静态函数成员的认识
2014-11-30 23:08
330 查看
类包含数据成员和函数成员,它们都可以声明为静态成员。
在声明数据成员的前面加上static就声明了一个静态数据成员,例如:static int a;就声明了一个具有静态生存期的静态数据成员,静态数据成员和普通数据成员的区别是普通数据成员只能用对象访问,而静态数据成员则可以通过类名和对象两种方式访问。静态数据成员又叫做类属性,因为这个数据成员是类拥有的,而不是某一个具体对象拥有。通过类名访问的方式:类名::静态数据成员名。
在声明函数成员的前面加上static就声明了一个静态函数成员,例如:static voidshowCount();
就声明了一个具有静态生存期的静态函数成员,静态函数成员的访问方式也有两种,通过类名和对象,通过类名的方式:类名::函数成员。静态函数成员也是属于整个类所共有的,不是某一个对象的,所有对象都对它进行维护和使用。静态函数成员可以直接访问类的静态成员,如果要访问非静态成员,必须通过对象名,举个例子:
class A{
public:
static void f(A a);
……
private:
int x;
}
void A::f(A a){
cout<<x; //这个不对,不能直接访问。
cout<<a.x; //这个对,要通过对象访问。
};
通过这个例子大家可以看出用静态函数成员访问非静态成员必须要通过对象名。在实际运用中,静态函数成员通常用来访问静态成员。
为什么要通过对象名来访问呢?这是因为非静态成员的访问必须经过对象才能调用,而在普通的函数成员调用数据成员时,实际上也是隐含了通过目的对象访问数据成员,因此,用静态函数成员访问非静态成员时,必须指出对象,才能访问非静态成员。
以上就是我对类的静态数据成员和静态函数成员的一些认识。
在声明数据成员的前面加上static就声明了一个静态数据成员,例如:static int a;就声明了一个具有静态生存期的静态数据成员,静态数据成员和普通数据成员的区别是普通数据成员只能用对象访问,而静态数据成员则可以通过类名和对象两种方式访问。静态数据成员又叫做类属性,因为这个数据成员是类拥有的,而不是某一个具体对象拥有。通过类名访问的方式:类名::静态数据成员名。
在声明函数成员的前面加上static就声明了一个静态函数成员,例如:static voidshowCount();
就声明了一个具有静态生存期的静态函数成员,静态函数成员的访问方式也有两种,通过类名和对象,通过类名的方式:类名::函数成员。静态函数成员也是属于整个类所共有的,不是某一个对象的,所有对象都对它进行维护和使用。静态函数成员可以直接访问类的静态成员,如果要访问非静态成员,必须通过对象名,举个例子:
class A{
public:
static void f(A a);
……
private:
int x;
}
void A::f(A a){
cout<<x; //这个不对,不能直接访问。
cout<<a.x; //这个对,要通过对象访问。
};
通过这个例子大家可以看出用静态函数成员访问非静态成员必须要通过对象名。在实际运用中,静态函数成员通常用来访问静态成员。
为什么要通过对象名来访问呢?这是因为非静态成员的访问必须经过对象才能调用,而在普通的函数成员调用数据成员时,实际上也是隐含了通过目的对象访问数据成员,因此,用静态函数成员访问非静态成员时,必须指出对象,才能访问非静态成员。
以上就是我对类的静态数据成员和静态函数成员的一些认识。
相关文章推荐
- C++静态数据成员/静态函数成员总结
- C++静态数据成员/静态函数成员总结
- c++:静态函数成员与静态数据成员
- C++静态数据成员 静态函数
- c++:静态函数成员与静态数据成员
- C++静态成员:静态数据成员和静态函数成员
- C++静态数据成员及静态函数总结
- C++之静态数据成员与静态函数的分析
- C++:静态成员函数,静态数据成员,成员函数存储方式
- C++的静态数据成员(转载)
- C++中的静态数据成员和静态成员函数
- 【C++基础学习】关于C++静态数据成员
- C++中类的静态数据成员函数解析
- C++ 静态数据成员 静态成员函数
- c++ 静态数据成员和静态成员函数
- 关于c++的静态数据(函数)成员的理解
- C++静态数据成员
- 【C++基础学习】关于C++静态数据成员
- c++ 静态数据成员总结
- C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员