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>
相关文章推荐
- STL中的binary_search upper_bounde lower_bound
- 第12周项目3 图遍历算法实现
- C/C++语言字符串操作总结大全(超详细)
- 不使用C/C++字符串数据库函数,如何自行编写strcpy()函数?
- 10个ADC滤波算法
- C++ 18备忘录模式
- 关于c++中cout与分号的一个细节
- 第12周项目2 操作用邻接表存储的图
- C语言自动生成enum值和名字映射代码
- 第12周项目1 图基本算法库
- c语言进制学习
- c++ 关于静态变量的初始化
- C字符串和C++字符串
- VC++实现双屏显示同一内容
- 快速入门的一些C\C++书籍
- C++学习笔记-数组
- Rcpp的前世今生
- rqnoj 2 开心的金明
- CPP-operator= overloding
- 学习算法 - 表指针实现~ C++