游戏开发论坛

 找回密码
 立即注册
搜索
楼主: weisite

问个问题(比较弱)

[复制链接]

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-10-23 14:48:00 | 显示全部楼层

Re:问个问题(比较弱)

ok,那句话我看了,他的意思是说“melancholia”这个“表达式”的“结果”是个const char*类型,并不是说这个字符串就是一个const char *类型,“结果”只能赋值给变量或是其他的什么东西,只有变量有const char*类型,如果在内存中的字符串也有const char*属性的话,你说当时在C(不是C++)下如何修改这个字符串。我想这还是翻译的问题,或是C的遗留问题!所以你也别太计较了!

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-10-23 15:16:00 | 显示全部楼层

Re:问个问题(比较弱)

不知道你注意到了没有,如果你想改变一个const char*类型的指针里面的值的时候,在编译时刻编译器就会通知你,说明const属性是个编译时属性,不是运行时属性;再有,如果一段内存是const属性,CPU如何在赋值时修改它,从而给他赋值呢?所以,const属性是编译时属性。

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-10-23 15:17:00 | 显示全部楼层

Re:问个问题(比较弱)

建议版主把这个问题顶起来,觉得很有意思!

26

主题

324

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
QQ
 楼主| 发表于 2004-10-24 20:51:00 | 显示全部楼层

Re: Re:问个问题(比较弱)

william9527: Re:问个问题(比较弱)

ok,那句话我看了,他的意思是说“melancholia”这个“表达式”的“结果”是个const char*类型,并不是说这...


恩,可是即使是结果是const char*类型,能将这样的结果赋给一个char*吗?不能吧,会出现编译错误的啊!
说是翻译问题还可以接受。可是C遗留问题是怎么回事呢?难道就是不能解决的吗?没大碍吗?都有哪些啊??

26

主题

324

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
QQ
 楼主| 发表于 2004-10-24 21:03:00 | 显示全部楼层

Re: Re:问个问题(比较弱)

william9527: Re:问个问题(比较弱)

不知道你注意到了没有,如果你想改变一个const char*类型的指针里面的值的时候,在编译时刻编译器就会通知你...


所有被cosnt修饰的类型都应该是在编译时被确定的吧。还有,每一个被const修饰的类型在内存中分配的空间都应该被标识为const吧(这种内存应该是在编译就分配好的),不能再被修改了,要是想它再被修改,又何必设为const呢?就是因为不能再被修改,所以const类型都必须先初始化吧!

5

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2004-10-24 21:33:00 | 显示全部楼层

Re: Re:问个问题(比较弱)

weisite: Re:问个问题(比较弱)

又试了一下,
const double cdval = 9.60;
double *ptr = &cdval;
会被认出是错误。
为什么呢??无...

确实是个特殊的,一句话有时候被编译器分成好几句了。 [em19] [em19]

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2004-10-24 22:00:00 | 显示全部楼层

Re:问个问题(比较弱)

总算看懂了……
实际上,c++中所有的指针类型都是一样的,只不过加上了目标地址的数据类型而已。
楼主真的看懂了const的含义吗?我反正是被绕糊涂了。1楼的例子不就是个初始化吗?困惑中…………

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2004-10-24 22:03:00 | 显示全部楼层

Re:问个问题(比较弱)

建议楼主记住,c++里面的各项检查是非常少的,不要太在乎类型。例如
char lambda='a';
lambda+=1;
cout<<lambda;
结果是'b'。

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-10-25 02:06:00 | 显示全部楼层

Re:问个问题(比较弱)

我所说的C的遗留问题,就是诸如:
char *p = "haha";
我的理解是C++为了兼容C而将这种方式也包含进来,因为当时C并没有const属性,C++只是用const来更加好的修饰指针。

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-10-25 02:08:00 | 显示全部楼层

Re:问个问题(比较弱)

同意seer的看法,建议楼主不要太在乎这些!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 00:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表