关于常数据成员

tianshuang.me 2014-01-19 03:08:50
书上的选择,这句话是错的:可以在类体外面定义常数据成员。
为啥是错的?
...全文
226 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2014-01-20
  • 打赏
  • 举报
回复
非静态成员函数,不过是一种语法糖而已
lm_whales 2014-01-20
  • 打赏
  • 举报
回复
code::blocks 12.11 版本,自带的minGw, 私有静态变量(常量),不能类外初始化;
lm_whales 2014-01-20
  • 打赏
  • 举报
回复
类有静态成员(属于对象)和非静态成员(属于整个类)两种成员(变量,函数) 成员函数,不过是一种语法糖而已 通过隐藏的,第一个参数,传递对象地址, 即 this 指针,调用函数 对象内部并不存储每一个函数 只有虚函数,需要存储在虚函数表中,对象中需要存储虚表指针。 非静态成员变量,是一个类的对象的一部分,静态成员变量不是,是类作用域的,全体类对象可以使用的变量。 实际上,可以再类外部定义静态成员变量,即使用 const 修饰。 例如 class A{ public: int a;//类内声明,同时也是形式上的定义,而非静态成员的实际定义, //是在定义对象的时候,分配内存和初始化,内置类型不需要初始化。 double b=10;//C++11 成员变量,类内初始化,不支持的编译器,不能这么做 static const double x;//静态成员变量(常量)类内声明 static const int y;//静态成员变量(常量)类内声明 static const M =20;//静态成员常量类内定义 int c[M]; //数组成员变量;-静态成员常量,类内定义后,可以用来定义数组(作为数组长度)。 }; const double A::x = 0;//静态成员变量(常量)类外定义 const int A:: y = 0; //静态成员变量(常量)类外定义
threenewbee 2014-01-19
  • 打赏
  • 举报
回复
定义在类外面的,除了注释和预编译指令(包含、定义、宏等等),应该叫全局变量/常数/函数等等。
threenewbee 2014-01-19
  • 打赏
  • 举报
回复
既然是“成员”,自然应该属于一个类,怎么能在外面定义呢。
tianshuang.me 2014-01-19
  • 打赏
  • 举报
回复
引用 4 楼 ColorfulCode 的回复:
这种? class T { const int a = 9; };
你这应该算是类体里面吧,反正我也不太明白那句话的意思
colorfulcode 2014-01-19
  • 打赏
  • 举报
回复
这种? class T { const int a = 9; };
tianshuang.me 2014-01-19
  • 打赏
  • 举报
回复
tianshuang.me 2014-01-19
  • 打赏
  • 举报
回复
引用 1 楼 lm_whales 的回复:
书,内容贴出来
就是个选择题,叫选错误的选项,答案就是这个
lm_whales 2014-01-19
  • 打赏
  • 举报
回复
书,内容贴出来

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧