Questions tagged «c++»

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

2
如何显式实例化模板函数?
我有一个带有一个参数的模板函数。我必须实例化该函数而不调用该函数,这意味着我必须实例化。 我有这个功能: template <class T> int function_name(T a) {} 我实例化了这样的功能: template int function_name<int>(int); 但是我遇到了以下错误: error: expected primary-expression before 'template' error: expected `;' before 'template'
117 c++  templates 

4
重新抛出原始异常时的C ++异常问题
捕获中的以下append()是否会导致重新抛出的异常,以查看被调用append()的效果? try { mayThrowMyErr(); } catch (myErr &err) { err.append("Add to my message here"); throw; // Does the rethrow exception reflect the call to append()? } 同样,如果我用这种方式重写它,如果实际异常是由myErr派生的,会发生位切片吗? try { mayThrowObjectDerivedFromMyErr(); } catch (myErr &err) { err.append("Add to my message's base class here"); throw err; // Do I lose the derived …
117 c++  exception  rethrow 



12
“常量静态”在C和C ++中是什么意思?
const static int foo = 42; 我在StackOverflow上的某些代码中看到了这一点,但无法弄清楚它的作用。然后我在其他论坛上看到了一些困惑的答案。我最好的猜测是,它在C语言中用于隐藏foo其他模块中的常量。这样对吗?如果是这样,为什么有人会在可以制作它的C ++上下文中使用它private呢?
117 c++  c 

11
异常代码“ EXC_I386_GPFLT”是什么意思?
异常代码是什么意思EXC_I386_GPFLT? 它的含义是否随情况而变化? 在这种情况下,我指的是EXC_BAD_ACCESS带有异常代码的异常类型EXC_I386_GPFLT 该程序是用Xcode 5.0.1开发的,用于处理cblas_zgemm()BLAS库。(嗯,我想这没关系... 非常感谢你!
117 c++  c  exc-bad-access 

12
与Python生成器模式等效的C ++
我有一些需要在C ++中模仿的示例Python代码。我不需要任何特定的解决方案(例如基于协同例程的收益解决方案,尽管它们也是可接受的答案),我只需要以某种方式重现语义。 蟒蛇 这是一个基本的序列生成器,显然太大了,无法存储实例化版本。 def pair_sequence(): for i in range(2**32): for j in range(2**32): yield (i, j) 目标是维护上述序列的两个实例,并以半锁步的方式在块上进行迭代。在下面的示例中,first_pass使用对的序列来初始化缓冲区,然后second_pass重新生成相同的精确序列并再次处理缓冲区。 def run(): seq1 = pair_sequence() seq2 = pair_sequence() buffer = [0] * 1000 first_pass(seq1, buffer) second_pass(seq2, buffer) ... repeat ... C ++ 对于C ++解决方案,我唯一能找到的就是模仿yieldC ++协程,但是我还没有找到有关如何执行此操作的良好参考。我也对解决此问题的替代(非常规)解决方案感兴趣。我没有足够的内存预算来保留两次通过之间的序列副本。

3
最简单但完整的CMake示例
某种程度上,我对CMake的工作方式完全感到困惑。每当我认为我越来越了解CMake的含义时,在我阅读的下一个示例中,它就消失了。我只想知道,我应该如何构造我的项目,以便将来CMake所需的维护最少。例如,当我在src树中添加新文件夹时,我不想更新CMakeList.txt,该文件夹的工作方式与所有其他src文件夹完全相同。 这就是我想象项目结构的方式,但是请仅这只是一个例子。如果建议的方法不同,请告诉我,并告诉我如何进行。 myProject src/ module1/ module1.h module1.cpp module2/ [...] main.cpp test/ test1.cpp resources/ file.png bin [execute cmake ..] 顺便说一句,重要的是我的程序必须知道资源在哪里。我想知道推荐的资源管理方式。我不想使用“ ../resources/file.png”访问我的资源
117 c++  cmake  project-setup 

10
什么时候调用C ++析构函数?
基本问题:程序何时在C ++中调用类的析构函数方法?有人告诉我,只要对象超出范围或受到delete 更具体的问题: 1)如果对象是通过指针创建的,并且该指针后来被删除或提供了指向的新地址,那么指向该对象的对象是否调用其析构函数(假设没有其他对象指向该析构函数)? 2)跟进问题1,由什么定义对象何时超出范围(与对象何时离开给定的{block}无关)。因此,换句话说,何时在链接列表中的对象上调用析构函数? 3)您是否想手动调用析构函数?
117 c++  destructor 



30
与C语言相比,C ++的局限性是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 改善这个问题 以下是C ++的好处 C ++提供了他们所要求的特定功能 他们的C编译器几乎可以肯定是C ++编译器,因此不会产生软件成本问题 C ++和C一样可移植 C ++代码可以和C一样高效(或多或少) 是否有任何具体的原因和特定的情况,即必须在C ++上使用C? 引用此问题:C语言中的泛型库 不能重复,因为这个问题是在询问语言限制,而不是在/不应该学习一种语言。 Peter Kirkham的帖子对我来说是最有用的信息,特别是关于我没有考虑过的C99问题,因此我接受了。感谢所有其他参加者。
116 c++  c 

30
编码实践,使编译器/优化器可以制作更快的程序
许多年前,C编译器并不是特别聪明。作为解决方法,K&R发明了register关键字,以向编译器提示,将这个变量保留在内部寄存器中可能是一个好主意。他们还让第三级操作员帮助生成更好的代码。 随着时间的流逝,编译器逐渐成熟。他们变得非常聪明,因为他们的流程分析使他们能够比您可能做的更好地决定要保存在寄存器中的值。register关键字变得不重要。 由于别名问题,对于某些类型的操作,FORTRAN可能比C更快。从理论上讲,经过仔细的编码,可以绕过这一限制,以使优化器生成更快的代码。 有哪些可用的编码实践可以使编译器/优化器生成更快的代码? 确定您使用的平台和编译器,将不胜感激。 为什么该技术似乎有效? 鼓励使用示例代码。 这是一个相关的问题 [编辑] 此问题与概要分析和优化的总体过程无关。假设程序已正确编写,经过全面优化编译,经过测试并投入生产。您的代码中可能存在一些禁止优化器尽其所能的构造。您如何做才能重构以消除这些禁止并允许优化器生成更快的代码? [编辑] 偏移相关链接

6
提高boost_shared_mutex的示例(多次读取/一次写入)?
我有一个多线程应用程序,该应用程序必须经常读取一些数据,并偶尔更新数据。现在,互斥锁可以确保对数据的安全访问,但是这很昂贵,因为我希望多个线程能够同时读取,并且仅在需要更新时才将它们锁定(更新线程可以等待其他线程完成)。 。 我认为这是boost::shared_mutex应该做的,但是我不清楚如何使用它,也没有找到明确的例子。 有人有我可以用来入门的简单示例吗?

8
在运行时可以检测到C ++ 03和C ++ 11之间有什么区别(如果有)?
可以编写一个函数,当使用C编译器进行编译时,该函数将返回0,而使用C ++编译器进行编译时,该函数将返回1(用琐碎的处理 #ifdef __cplusplus是没有意义的)。 例如: int isCPP() { return sizeof(char) == sizeof 'c'; } 当然,以上内容仅sizeof (char)在与sizeof (int) 另一个更便携的解决方案是这样的: int isCPP() { typedef int T; { struct T { int a[2]; }; return sizeof(T) == sizeof(struct T); } } 我不确定这些示例是否100%正确,但是您可以理解。我相信还有其他方法可以编写相同的函数。 在运行时可以检测到C ++ 03和C ++ 11之间有什么区别(如果有)?换句话说,是否可以编写类似的函数来返回一个布尔值,该值指示该布尔值是由合格的C ++ 03编译器还是C ++ 11编译器编译的? bool isCpp11() …

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.