首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

书下这一点是不是错了

2013-01-17 
书上这一点是不是错了c++允许动态创建const对象const int *pci new const int(1024)我上网查了查貌似应

书上这一点是不是错了
c++允许动态创建const对象

const int *pci = new const int(1024);


我上网查了查  貌似应该是
const int *pci = new int(1024)



反正问问题不要钱,上来问一下~
[解决办法]
引用:
const int *pci = new const int(1024); 
这种写法在那里看到的,我从来没有见过,应该编译都不能通过。
动态对象,是指运行时创建的对象,这里的new创建的对象就是动态的。
所谓常量对象是指对象里的值不能通过某种方式改变。
const int *pci = new int(1024); 
这种方式就创建了一个动态常量对象,初始值为1024,我们不能通过指针……


刚试了下这种写法 const int *pci = new const int(1024);
在VC6.0下编译错误,但是在gcc下可以编译可以通过.
[解决办法]
首先要说的是这两种都是正确的,我在VS2010环境下试过了。
const int *pci;这么一个指针是可以接受int变量地址的,当然也是可以接受const int变量地址的。
因为编译器是无法得知某存储区域存储的是否为常量的,所以对于pci这么一个指针来说他不管指向的是不是一个整型常量,编译器都认为他指向的是一个常量,这么一来就不允许通过pci指针来修改其所指向的空间的值了。
要多说的是const int变量地址只能赋给一个const int *变量。而int变量随意

热点排行