读书人

书下这一点是不是错了

发布时间: 2013-01-17 10:28:54 作者: rapoo

书上这一点是不是错了
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变量随意

读书人网 >C++

热点推荐