草庐IT

differences

全部标签

c++ - 从 Josuttis : Do different template functions, 实例化到给定特定类型的相同函数签名,导致 ODR 无效?

在Josuttis和Vandevoorde关于模板的著名著作中,C++Templates:TheCompleteGuide,他们讨论了有关函数模板重载的细节。在他们的一个示例中,与函数签名和重载函数模板的讨论相关,他们提供了用以下术语描述的代码:Thisprogramisvalidandproducesthefollowingoutput:(Note:Outputshownbelow)但是,当我在VisualStudio2010中构建和编译相同的代码时,我得到了不同的结果。这让我相信要么是VS2010编译器生成了错误的代码,要么是Josuttis错误地认为代码有效。这是代码。(Josu

c++ - Eclipse 有两个 C/C++ 索引器(快速且完整): what's the difference?

EclipseCDT为C/C++代码提供了两个索引器(Preferences>C/C++>Indexer)。有人知道这两者之间的确切区别是什么吗?帮助文件并不完全有启发性:"CDTsupportsthecontributionofadditionalindexers,with2indexersbeingprovidedwiththedefaultCDTrelease:FastC/C++Indexer:providesfastestindexingcapabilities-bothdeclarationsandcrossreferenceinformation.Thisisthereco

c++ - Eclipse 有两个 C/C++ 索引器(快速且完整): what's the difference?

EclipseCDT为C/C++代码提供了两个索引器(Preferences>C/C++>Indexer)。有人知道这两者之间的确切区别是什么吗?帮助文件并不完全有启发性:"CDTsupportsthecontributionofadditionalindexers,with2indexersbeingprovidedwiththedefaultCDTrelease:FastC/C++Indexer:providesfastestindexingcapabilities-bothdeclarationsandcrossreferenceinformation.Thisisthereco

c++ - 比较和交换 : synchronizing via different data sizes

使用GCC内置的C原子原语,我们可以使用__atomic_compare_exchange执行原子CAS操作。与C++11的std::atomic类型不同,GCCC原子原语在常规的非原子整数类型上运行,包括cmpxchg16b平台上的128位整数>支持。(C++标准的future版本可能支持与std::atomic_view类模板类似的功能。)这让我产生疑问:如果对较大数据大小的原子CAS操作观察到由对同一内存位置的原子操作发生的变化,但使用较小的数据大小会发生什么?例如,假设我们有:structuint128_type{uint64_tx;uint64_ty;}__attribute

c++ - 比较和交换 : synchronizing via different data sizes

使用GCC内置的C原子原语,我们可以使用__atomic_compare_exchange执行原子CAS操作。与C++11的std::atomic类型不同,GCCC原子原语在常规的非原子整数类型上运行,包括cmpxchg16b平台上的128位整数>支持。(C++标准的future版本可能支持与std::atomic_view类模板类似的功能。)这让我产生疑问:如果对较大数据大小的原子CAS操作观察到由对同一内存位置的原子操作发生的变化,但使用较小的数据大小会发生什么?例如,假设我们有:structuint128_type{uint64_tx;uint64_ty;}__attribute

java - 在构造函数中调用虚方法 : difference between Java and C++

在Java中:classBase{publicBase(){System.out.println("Base::Base()");virt();}voidvirt(){System.out.println("Base::virt()");}}classDerivedextendsBase{publicDerived(){System.out.println("Derived::Derived()");virt();}voidvirt(){System.out.println("Derived::virt()");}}publicclassMain{publicstaticvoidmai

java - 在构造函数中调用虚方法 : difference between Java and C++

在Java中:classBase{publicBase(){System.out.println("Base::Base()");virt();}voidvirt(){System.out.println("Base::virt()");}}classDerivedextendsBase{publicDerived(){System.out.println("Derived::Derived()");virt();}voidvirt(){System.out.println("Derived::virt()");}}publicclassMain{publicstaticvoidmai

c++ - 为什么顺序容器同时具有 size_type 和 difference_type?

vector两者都有vector::size_type和vector::difference_type.从size_type开始,两者似乎都没有必要存在。保证能够保存与vector的最大元素数一样大的值。可能包含在给定的系统上,并且在任何有效的用例中,difference_type必须小于或等于最大元素数,即顺序容器中两个元素之间的距离永远不会大于顺序容器可以包含的最大元素数。有人可以举个例子说明两者之间有什么区别吗? 最佳答案 container::difference_type存在是因为对于某些序列容器,您可以减去迭代器。该减法

c++ - 为什么顺序容器同时具有 size_type 和 difference_type?

vector两者都有vector::size_type和vector::difference_type.从size_type开始,两者似乎都没有必要存在。保证能够保存与vector的最大元素数一样大的值。可能包含在给定的系统上,并且在任何有效的用例中,difference_type必须小于或等于最大元素数,即顺序容器中两个元素之间的距离永远不会大于顺序容器可以包含的最大元素数。有人可以举个例子说明两者之间有什么区别吗? 最佳答案 container::difference_type存在是因为对于某些序列容器,您可以减去迭代器。该减法

c++ - 无效指针 : difference between C and C++

我试图了解C和C++在void指针方面的区别。以下是用C编译而不是C++编译(所有编译都使用gcc/g++-ansi-pedantic-Wall完成):int*p=malloc(sizeof(int));因为malloc返回void*,C++不允许将其分配给int*,而C允许这样做。但是,这里:voidfoo(void*vptr){}intmain(){int*p=(int*)malloc(sizeof(int));foo(p);return0;}C++和C都可以毫无问题地编译它。为什么?K&R2说:Anypointertoanobjectmaybeconvertedtotypevoi