10 个解决方案
#1
而书上的意思是虚析构的派生类必须要第二个参数~~什么意思呢?
#2
同理还有allocator类,deallocate(p, n);第二个参数在实现中完全没用到,实际上调用的还是::operator new(size_t)和::operator delete(void*),而这两个又调用malloc/free。也就是说allocate(10); deallocate(p, 5);实际上会完全释放内存。我算是对这些彻底茫然了。
大神求解啊
大神求解啊
#3
你就当没用就可以了。不需要钻牛角尖。
#4
c++还有这么坑爹的语法...
#5
特殊的语法是为特殊的场合设定。
你又不可能遇到这样的场合的,折腾它又何必呢。
你又不可能遇到这样的场合的,折腾它又何必呢。
#6
难道c++ primer写的内容也算特殊么?那还叫primer。。。
而且需要预分配的类用到operator new很正常吧,如果这个类还要可以被继承,书上这部分不就用到了。。。
而且需要预分配的类用到operator new很正常吧,如果这个类还要可以被继承,书上这部分不就用到了。。。
#7
倒,人家谦虚你也能当真。
需要预分配的类用到operator new是极不常见的。
需要预分配的类用到operator new是极不常见的。
#8
我以为真是primer。。。
那一般预分配怎么实现呢?书上卖萌说预分配就operator new,囧
那一般预分配怎么实现呢?书上卖萌说预分配就operator new,囧
#9
卖萌。。。明明?
书没看过不清楚。不过operator new/delete非标准库规定的签名的具体语义取决于实现作者……(即便是标准库给出的都可以替换定义)。
至于allocator……ISO C++有allocator requirements决定接口形式:调用a.allocate(n, u)的u作为unspecified的hint倒是可以完全不用;调用a.deallocate(p, n)的n必须和allocate里的对上。只不过用::operator delete这种实现确实用不上n而已,因为::operator new必须已经知道n了。
#10
谢谢,我明白什么意思了。
#1
而书上的意思是虚析构的派生类必须要第二个参数~~什么意思呢?
#2
同理还有allocator类,deallocate(p, n);第二个参数在实现中完全没用到,实际上调用的还是::operator new(size_t)和::operator delete(void*),而这两个又调用malloc/free。也就是说allocate(10); deallocate(p, 5);实际上会完全释放内存。我算是对这些彻底茫然了。
大神求解啊
大神求解啊
#3
你就当没用就可以了。不需要钻牛角尖。
#4
c++还有这么坑爹的语法...
#5
特殊的语法是为特殊的场合设定。
你又不可能遇到这样的场合的,折腾它又何必呢。
你又不可能遇到这样的场合的,折腾它又何必呢。
#6
难道c++ primer写的内容也算特殊么?那还叫primer。。。
而且需要预分配的类用到operator new很正常吧,如果这个类还要可以被继承,书上这部分不就用到了。。。
而且需要预分配的类用到operator new很正常吧,如果这个类还要可以被继承,书上这部分不就用到了。。。
#7
倒,人家谦虚你也能当真。
需要预分配的类用到operator new是极不常见的。
需要预分配的类用到operator new是极不常见的。
#8
我以为真是primer。。。
那一般预分配怎么实现呢?书上卖萌说预分配就operator new,囧
那一般预分配怎么实现呢?书上卖萌说预分配就operator new,囧
#9
卖萌。。。明明?
书没看过不清楚。不过operator new/delete非标准库规定的签名的具体语义取决于实现作者……(即便是标准库给出的都可以替换定义)。
至于allocator……ISO C++有allocator requirements决定接口形式:调用a.allocate(n, u)的u作为unspecified的hint倒是可以完全不用;调用a.deallocate(p, n)的n必须和allocate里的对上。只不过用::operator delete这种实现确实用不上n而已,因为::operator new必须已经知道n了。
#10
谢谢,我明白什么意思了。