您的位置:首页 > 编程语言 > C语言/C++

C++静态成员变量

2015-12-14 10:53 267 查看
<p>// aaa.cpp : 定义控制台应用程序的入口点。
//
//C++类的静态成员函数的应用
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;</p><p>//静态成员是属于整个类的,而并非某个对象。静态成员值存储一份供所有对象公用,所以在所有对象中都可以
//共享它。使用静态成员变量实现多个数据之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存
class Point
{
public:
 Point()
 {
  m_x = 1;
  cout<<"Point"<<endl;
 }
 ~Point()
 {
//  m_nPoint--; //编译无错误链接有错误。这因为类的静态成员变量必须先初始化再使用,初始化必须在类外
  cout<<"~Point"<<endl;
 }
 void init()
 {
  output(); //类的非静态成员按数可以调用类的静态成员函数,反之却不能
 }
 static void output()
 {
  cout << "output" << endl;
//  cout << m_x << endl; //错误 //静态成员函数不能引用非静态成员
 }</p><p>//因为静态成员属于整个类,在类实例化对象之前就已经分配空间了,而类的非静态成员必须在类实例化
//对象后才有内存空间,所以这个调用就出错了,就好比没有生命一个变量却提前使用它一样。</p><p>private:
 int m_x;
 static int m_nPoint;
};
//int Point::m_nPoint = 5;
int _tmain(int argc, _TCHAR* argv[])
{
// Point::init(); //错误 //非静态成员引用必须与特定对象相对,不能通过类名来调用类的非静态成员函数
 Point::output();
 Point pt;
 pt.init();
 pt.output(); //类的对象可以使用静态成员函数和非静态成员函数
 return 0;
}</p><p> </p>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: