草庐IT

矛盾性

全部标签

c++ - C++ 标准中与 [basic.link]/7 相关的 GCC 和 clang 之间的矛盾结果

这段代码在clang中编译,namespaceA{voidf(){voidg();g();}}voidA::g(){}但如果g在命名空间A中定义如下,GCC只接受代码:namespaceA{voidf(){voidg();g();}voidg(){}}但我相信[basic.link]/7中没有任何内容不允许上面的第一个片段。 最佳答案 [basic.link]/p7,强调我的:Whenablockscopedeclarationofanentitywithlinkageisnotfoundtorefertosomeotherdecl

c++ - Stroustrup 的 RAII 和强制转换运算符 FILE*() = 矛盾?

我正在阅读Stroustrup的C++(1997年第3版)以了解他是如何实现RAII的,在第365页上我发现了这一点:classFile_ptr{FILE*p;public:File_ptr(constchar*n,constchar*a){p=fopen(n,a);}File_ptr(FILE*pp){p=pp;}~File_ptr(){fclose(p);}operatorFILE*(){returnp;}};构造函数和析构函数的实现很明显,符合RAII习语,但我不明白他为什么使用operatorFILE*(){returnp;}。这将导致以下列方式使用File_ptr:FILE*

c++ - Stroustrup书与C++ Standard之间的明显矛盾

我试图从第282页的Stroustrup的“C++编程语言”中理解以下段落(强调是我的):Todeallocatespaceallocatedbynew,deleteanddelete[]mustbeabletodeterminethesizeoftheobjectallocated.Thisimpliesthatanobjectallocatedusingthestandardimplementationofnewwilloccupyslightlymorespacethanastaticobject.Ataminimum,spaceisneededtoholdtheobject’s

c++ - 获取动态 C 样式数组的大小与使用 delete[]。矛盾?

这个问题在这里已经有了答案:C++doesn'ttellyouthesizeofadynamicarray.Butwhy?(7个回答)关闭3年前。我到处都读到,在C++中,仅从指向该内存块的指针获取动态数组的大小是不可能的。怎么可能没有办法只从指针中获取动态数组的大小,同时又可以通过delete[]释放所有分配的内存>就在指针上,不需要指定数组大小?delete[]一定知道数组的大小吧?因此,此信息必须存在于某处。不应该吗?我的推理有什么问题? 最佳答案 TL;DR运算符delete[]破坏对象并释放内存。销毁需要信息N(“元素数量

java - getter 和 setter 是糟糕的设计吗?看到矛盾的建议

这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭7年前。我目前正在开发一个具有多种不同模式的Java简单游戏。我扩展了一个主游戏类,将主逻辑放在其他类中。尽管如此,主要的游戏类仍然相当庞大。在快速查看我的代码后,其中大部分是Getter和Setter(60%),而其余部分则是游戏逻辑真正需要的。一些Google搜索声称Getter和Setter是邪恶的,而其他人则声称它们对于良好的OO实践和出色的程序是必要的。那我该怎么办?应该是哪个?我应该为我的私有(private)变量更改我的Getter和Setter,还是应该坚持

c++ - numeric_limits<int>::is_modulo 在逻辑上是否矛盾?

在anotherquestion,话题std::numeric_limits::is_modulo上来了。但我想得越多,就越觉得规范或GCC或两者都有问题。让我从一些代码开始:#include#includebooltest(intx){returnx+1>x;}intmain(intargc,char*argv[]){intbig=std::numeric_limits::max();std::cout::is_modulo当我用g++-O3-std=c++11编译它时(x86_64GCC4.7.2),它会产生以下输出:1-21474836481也就是说,is_modulo是真的,一

c++ - numeric_limits<int>::is_modulo 在逻辑上是否矛盾?

在anotherquestion,话题std::numeric_limits::is_modulo上来了。但我想得越多,就越觉得规范或GCC或两者都有问题。让我从一些代码开始:#include#includebooltest(intx){returnx+1>x;}intmain(intargc,char*argv[]){intbig=std::numeric_limits::max();std::cout::is_modulo当我用g++-O3-std=c++11编译它时(x86_64GCC4.7.2),它会产生以下输出:1-21474836481也就是说,is_modulo是真的,一

c++ - C++11 标准中的 §12.3.2/1 似乎存在矛盾

C++11标准§12.3.2/1(强调我的):AmemberfunctionofaclassXhavingnoparameterswithanameoftheformconversion-function-id:operatorconversion-type-id转换类型ID:type-specifier-seqconversion-declarator转换声明符:ptr-operatorconversion-declarator指定从X到conversion-type-id指定的类型的转换。此类函数称为转换函数。不能指定返回类型。如果转换函数是成员函数,则转换函数(8.3.5)的类型

c++ - C++11 标准中的 §12.3.2/1 似乎存在矛盾

C++11标准§12.3.2/1(强调我的):AmemberfunctionofaclassXhavingnoparameterswithanameoftheformconversion-function-id:operatorconversion-type-id转换类型ID:type-specifier-seqconversion-declarator转换声明符:ptr-operatorconversion-declarator指定从X到conversion-type-id指定的类型的转换。此类函数称为转换函数。不能指定返回类型。如果转换函数是成员函数,则转换函数(8.3.5)的类型

c# - 寻求澄清有关弱类型语言的明显矛盾

我想我明白了strongtyping,但是每次我寻找弱类型的示例时,我最终都会找到简单地自动强制/转换类型的编程语言示例。例如,在这篇名为Typing:Strongvs.Weak,Staticvs.Dynamic的文章中说Python是强类型的,因为如果你尝试这样做会得到一个异常:Python1+"1"Traceback(mostrecentcalllast):File"",line1,in?TypeError:unsupportedoperandtype(s)for+:'int'and'str'然而,这样的事情在Java和C#中是可能的,我们不认为它们是弱类型的。Javainta=1