由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问个c++问题
相关主题
question about const reference自动化编程问题请教
const in c++[合集] c++ parameter reflection
C++ 两个project enum value名冲突generate unique integer ID from columns in SQL table (转载
C++一问问个a=b 的问题
[c++] reference 真得不能bound to a second object 么?请教一个python的概念问题
为啥允许这样的const设计array如何get set?
请教一个C++关于输入输出的问题对 (im)mutability 的误解和深度理解
mySQL 问题这么说吧,fp不是否定变量,而是控制变量的范围
相关话题的讨论汇总
话题: temp话题: value1话题: value2话题: const话题: int
进入Programming版参与讨论
1 (共1页)
h****b
发帖数: 157
1
Is there anything wrong with this C++ class declaration?
class temp
{
int value1;
mutable int value2;
public :
void fun(int val)
const{
((temp*) this)->value1 = 10;
value2 = 10;
}
};
为什么我编译没问题? 再有((temp*) this)什么意思? const函数不是不能改变
member
variable?
多谢
X****r
发帖数: 3557
2
在fun里this是const temp*类型的,你把它cast成temp*了,
自然就可以给其中的value1赋值了。

【在 h****b 的大作中提到】
: Is there anything wrong with this C++ class declaration?
: class temp
: {
: int value1;
: mutable int value2;
: public :
: void fun(int val)
: const{
: ((temp*) this)->value1 = 10;
: value2 = 10;

h****b
发帖数: 157
3
ok,ic. 那就是说code没问题?
X****r
发帖数: 3557
4
语法上没问题。

【在 h****b 的大作中提到】
: ok,ic. 那就是说code没问题?
e*l
发帖数: 37
5
这个纯粹吃饱了撑的

【在 h****b 的大作中提到】
: Is there anything wrong with this C++ class declaration?
: class temp
: {
: int value1;
: mutable int value2;
: public :
: void fun(int val)
: const{
: ((temp*) this)->value1 = 10;
: value2 = 10;

a****l
发帖数: 8211
6
这种东西就是以前说的"知识越多越反动".做这种事最后的结果就是引入bug.不要去想
这种所谓的技巧,用最简单的方法,不出错.很多人喜欢考这种东西,可以说最后吸引的都
是危险分子.

【在 e*l 的大作中提到】
: 这个纯粹吃饱了撑的
X****r
发帖数: 3557
7
这个说的有道理,但略失之偏颇。这些稍微偏僻的语言特性虽然大部分时候不需要,
但在有些时候还是很有用处的,而且它们其实是有内在逻辑的,只要理解就自然会用了。
关键不在于这些技巧本身,而是知道什么时候该用,什么时候不该用。
《老子》云:知其白,守其黑,为天下式。可不是说“不知其白,守其黑”哦。

【在 a****l 的大作中提到】
: 这种东西就是以前说的"知识越多越反动".做这种事最后的结果就是引入bug.不要去想
: 这种所谓的技巧,用最简单的方法,不出错.很多人喜欢考这种东西,可以说最后吸引的都
: 是危险分子.

l******e
发帖数: 12192
8
这个只是个考题吧
不是真代码

【在 a****l 的大作中提到】
: 这种东西就是以前说的"知识越多越反动".做这种事最后的结果就是引入bug.不要去想
: 这种所谓的技巧,用最简单的方法,不出错.很多人喜欢考这种东西,可以说最后吸引的都
: 是危险分子.

a****l
发帖数: 8211
9
考题体现了思路.考试会这么出题,平时就会想到这么做.

【在 l******e 的大作中提到】
: 这个只是个考题吧
: 不是真代码

l******e
发帖数: 12192
10
还真未必

【在 a****l 的大作中提到】
: 考题体现了思路.考试会这么出题,平时就会想到这么做.
h*****0
发帖数: 4889
11
其实这段例子代码是给出了两种改变const对象内容的方法。很明显第一种用了显式
cast的是不好的,有可能出bug的。不过第二种mutable应该是标准方法。
知道这是怎么回事当然不是坏事。不过简单的一句“代码没有问题”就满足了的,多半
是种下了危险的种子。

【在 a****l 的大作中提到】
: 这种东西就是以前说的"知识越多越反动".做这种事最后的结果就是引入bug.不要去想
: 这种所谓的技巧,用最简单的方法,不出错.很多人喜欢考这种东西,可以说最后吸引的都
: 是危险分子.

a****l
发帖数: 8211
12
我同意,第二个应该是合理的做法。什么可以动,什么不可以动,定义的时候要写清楚
,使用的时候要照定义做,不要搞投机取巧的hack方法。

【在 h*****0 的大作中提到】
: 其实这段例子代码是给出了两种改变const对象内容的方法。很明显第一种用了显式
: cast的是不好的,有可能出bug的。不过第二种mutable应该是标准方法。
: 知道这是怎么回事当然不是坏事。不过简单的一句“代码没有问题”就满足了的,多半
: 是种下了危险的种子。

1 (共1页)
进入Programming版参与讨论
相关主题
这么说吧,fp不是否定变量,而是控制变量的范围[c++] reference 真得不能bound to a second object 么?
c++ iterator 弱问为啥允许这样的const设计
how to change a variable's value in a const function请教一个C++关于输入输出的问题
问个问题mySQL 问题
question about const reference自动化编程问题请教
const in c++[合集] c++ parameter reflection
C++ 两个project enum value名冲突generate unique integer ID from columns in SQL table (转载
C++一问问个a=b 的问题
相关话题的讨论汇总
话题: temp话题: value1话题: value2话题: const话题: int