Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。



3
禁用复制构造函数
我有一堂课: class SymbolIndexer { protected: SymbolIndexer ( ) { } public: static inline SymbolIndexer & GetUniqueInstance ( ) { static SymbolIndexer uniqueinstance_ ; return uniqueinstance_ ; } }; 我应该如何修改它以禁用如下代码: SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( ); 并且只允许像这样的代码: SymbolIndexer & ref_symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( );


2
shared_ptr到数组:应该使用它吗?
只是有关的一个小查询shared_ptr。 使用shared_ptr指向数组的好习惯吗?例如, shared_ptr<int> sp(new int[10]); 如果没有,那为什么不呢?我已经知道的一个原因是无法增加/减少shared_ptr。因此,它不能像指向数组的普通指针那样使用。
172 c++  c++11  shared-ptr 

13
内联虚拟功能真的是胡扯吗?
当我收到一条代码审查评论时说了虚函数不必是内联的,这是我遇到的问题。 我认为内联虚拟函数可以在直接在对象上调用函数的情况下派上用场。但是我想到的反驳是-为什么要定义虚拟然后使用对象来调用方法? 最好不要使用内联虚拟函数,因为它们几乎从未扩展过? 我用于分析的代码段: class Temp { public: virtual ~Temp() { } virtual void myVirtualFunction() const { cout<<"Temp::myVirtualFunction"<<endl; } }; class TempDerived : public Temp { public: void myVirtualFunction() const { cout<<"TempDerived::myVirtualFunction"<<endl; } }; int main(void) { TempDerived aDerivedObj; //Compiler thinks it's safe to expand the virtual functions aDerivedObj.myVirtualFunction(); //type …

10
如何使用C ++在一行中声明和定义多个变量?
我总是说,如果我声明这三个变量,它们的值都将为0 int column, row, index = 0; 但是我发现只有索引等于零,其他索引就像844553和2423445一样是垃圾。 我如何将所有这些变量初始化为零,而无需在新行中声明每个变量?
172 c++ 

11
使用G ++编译多个.cpp和.h文件
我刚刚继承了一些C ++代码,这些代码用一个包含主要功能和许多其他功能的cpp文件编写得很差。也有.h包含类及其函数定义的文件。 到目前为止,该程序是使用命令编译的g++ main.cpp。现在,我将类.h和.cpp文件分开了,我是否需要使用makefile或仍可以使用g++ main.cpp命令?

3
std :: atomic到底是什么?
我明白那个 std::atomic<>是一个原子对象。但是原子到什么程度呢?据我了解,操作可以是原子的。使对象原子化的确切含义是什么?例如,如果有两个线程同时执行以下代码: a = a + 12; 那么整个操作(比如说add_twelve_to(int))是原子的吗?还是对变量atomic进行了更改(so operator=())?

4
使用GCC 5.4.0进行昂贵的跳转
我有一个看起来像这样的函数(仅显示重要部分): double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int shiftY) { ... for(std::size_t i=std::max(0,-shift);i<max;i++) { if ((curr[i] < 479) && (l[i + shift] < 479)) { nontopOverlap++; } ... } ... } 这样写,该功能在我的机器上花了〜34ms。将条件更改为布尔乘法(使代码如下所示)后: double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int shiftY) { ... for(std::size_t i=std::max(0,-shift);i<max;i++) …
171 c++  gcc 


7
Objective-C与C ++有何不同?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 在语法,功能,范例,框架和库方面,Objective-C和C ++之间的主要区别是什么? *重要:我的目标不是在两种语言之间展开性能大战。我只想要真实的事实。实际上,我的问题与性能无关!请提供任何看似主观的信息。
171 c++  objective-c 


2
为什么与普通函数相比,编译器可以更好地优化lambda?
The C++ Standard Library (Second Edition)Nicolai Josuttis 在他的书中指出,与普通函数相比,编译器可以更好地优化lambda。 此外,C ++编译器比常规函数更好地优化了lambda。(第213页) 这是为什么? 我认为在进行内联时,应该不再有任何区别。我能想到的唯一原因是,编译器可能具有更好的lambda本地上下文,这样可以做出更多的假设并执行更多的优化。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.