类中static并没有那么简单
2015-07-12 11:14
232 查看
class A { public: static int a; void printA () { cout << a << endl; } }; void main () { A a ; a.printA (); system("pause" ); }
这样写居然会报错,问题究竟在哪里?
给a赋值试试:
class A { public : static int a; void printA () { a = 0; cout << a << endl; } };
在生成对象时依然报同样的错误。
改成如下代码:
class A { public: static int a; void printA () { cout << a << endl; } }; int A ::a = 0; //这里不允许指定存储类,所以切记不能加static void main () { A a ; a.printA (); system("pause" ); }
这样便可以编译通过。
就只多加了一句 int A ::a = 0; 便可以编译通过。
原来 int A ::a = 0; 这里并不只是初始化那么简单,并且还要给类中的 a 分配内存空间,如果不加这一句,就相当于还没有分配内存空间就直接使用,所以会报错。
相关文章推荐
- iOS UIImageView 圆角
- Two Wrongs Can Make a Right (and Are Difficult to Fix)
- 浅析软件开发的3个层次
- Android中加载的图片自动适应屏幕(新手)
- 微信PC版为什么这么设计?
- Android Fragment的标准写法
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 指针和内存分配一个最基本理解
- Android实习02:"摇一摇"功能的实现
- iOS播放音乐
- Struts2拦截器实现异常处理机制
- Hadoop 2.6.0动态添加节点
- 队列阻塞及描述
- linux下的性能分析
- java socket & java NIO 通信机制
- sdut1299 最长上升子序列(dp入门)
- Construct Binary Tree from Inorder and Postorder Traversal
- 如何解决CRITICAL glance [-] AttributeError: 'NoneType' object has no attribute 'drivername'
- HTML 5 的data-* 自定义属性
- 如何创建内存盘