类中static成员初始化
来源:互联网 发布:c语言中整型变量 编辑:程序博客网 时间:2024/05/16 06:32
异步赠书:9月重磅新书升级,本本经典 SDCC 2017之区块链技术实战线上峰会 程序员9月书讯 每周荐书:Java Web、Python极客编程(评论送书)
static成员必须在类外初始化
2012-08-29 20:56 12317人阅读 评论(1)收藏举报
分类:
作者同类文章X
目录(?)[+]
- 为什么static成员必须在类外初始化
- 为什么静态成员不能在类内初始化
- 什么东西能在类内初始化
转:http://www.cnblogs.com/graphics/archive/2010/07/16/1778743.html
为什么static成员必须在类外初始化
为什么静态成员不能在类内初始化
在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样
class A{ private: static int count ; // 类内声明};int A::count = 0 ; // 类外初始化,不必再加static关键字
为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的。
什么东西能在类内初始化
能在类中初始化的成员只有一种,那就是静态常量成员。
这样不行
class A{ private: static int count = 0; // 静态成员不能在类内初始化};
这样也不行
class A{ private: const int count = 0; // 常量成员也不能在类内初始化};
但是这样可以
class A{ private: static const int count = 0; // 静态常量成员可以在类内初始化};
结论:
- 静态常量数据成员可以在类内初始化(即类内声明的同时初始化),也可以在类外,即类的实现文件中初始化,不能在构造函数中初始化,也不能在构造函数的初始化列表中初始化;
- 静态非常量数据成员只能在类外,即类的实现文件中初始化,也不能在构造函数中初始化,不能在构造函数的初始化列表中初始化;
- 非静态的常量数据成员不能在类内初始化,也不能在构造函数中初始化,而只能且必须在构造函数的初始化列表中初始化;
- 非静态的非常量数据成员不能在类内初始化,可以在构造函数中初始化,也可以在构造函数的初始化列表中初始化;
总结如下表:
类型 初始化方式
类内(声明)
类外(类实现文件)
构造函数中
构造函数的初始化列表
非静态非常量数据成员
N
N
Y
Y
非静态常量数据成员
N
N
N
Y (must)
静态非常量数据成员
N
Y (must)
N
N
静态常量数据成员
Y
Y
N
N
以下三种类型必须通过初始化列表来初始化
1.非静态 常量
2. 引用类型
3. 没有默认构造函数的类类型
- 顶
- 1
- 踩
- 1
- 上一篇extern “C”总结 C++中的explicit关键字
- 下一篇关系数据库系统与面向对象数据库系统各自的优缺点
相关文章推荐
- • 为什么static数据成员一定要在类外初始化?
- • 大数据技术实战线上峰会--董西成
- • C++类的静态成员变量为什么一定要初始化
- • 30天系统掌握机器学习--唐宇迪
- • c++ 防止头文件多次编译方法
- • ORACLE数据库学习资料集锦
- • 类模版静态成员初始化
- • PHP从零开始实战篇
- • redis C接口hiredis 简单函数使用介绍
- • 玩转微信小程序第一篇
- • C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
- • 深度学习案例分享—人脸检测
- • C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
- • 静态成员数据 静态对象初始化 .
- • Android检查更新下载安装
- • 为什么static成员必须在类外初始化
查看评论
- 1楼 zhui_xiuge2017-06-05 13:47发表 [回复] [引用][举报]
- 写之前总该检验一下吧
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
阅读全文
0 0
- 类中static成员初始化
- c++类中static、const、static const成员变量初始化
- c++类中const/static/const static成员变量初始化
- C++ 类中const成员 static 成员 const static 成员定义及初始化
- static成员变量在类的定义体中初始化
- 类中 const,static,reference成员的初始化
- 类中const, static, reference成员的初始化
- 类中const, static, reference成员的初始化
- 类中static成员
- static const * const 类成员 初始化
- static成员必须在类外初始化
- static成员必须在类外初始化
- static成员必须在类外初始化
- static成员必须在类外初始化
- static成员必须在类外初始化
- static成员必须在类外初始化
- 类内const static(static const)成员变量初始化问题
- VC6.0中,整型const static成员不能在类的定义体中初始化.
- 计算机网络__知识点集合1
- OkHttp+Xrecyclerview
- RecyclerView侧滑菜单,滑动删除,长按拖拽,下拉刷新上拉加载
- SQL基本概念
- code tips
- 类中static成员初始化
- 奥威Power-BI 医药行业数据分析应用之厂家药品分析
- java面试——springMVC面试题
- ZigBee开发环境搭建
- 《在C#中实现Socket端口复用》 以及《 UDP 一个封锁操作被对 WSACancelBlockingCall 的调用中断。》问题
- HTML基础整理(第一部分)
- 微信小程序分享转发
- java实现,中文财务读取金额方式
- 基于C# Winform的串口数据接收