Questions tagged «c++»

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

10
什么是“沉重的”?
我已经看到它用于编程(特别是在C ++域中),却不知道它是什么。大概这是一种设计模式,但我可能是错的。任何人都可以举出一个很好的例子吗?
130 c++  thunk 

10
C ++ 11中的线程池
相关问题: 关于C ++ 11: C ++ 11:std :: thread池化了吗? 为了避免昂贵的线程创建,C ++ 11中的async(launch :: async)是否会使线程池过时? 关于Boost: C ++ Boost线程重用线程 boost :: thread并创建它们的池! 我如何获得一个线程池以将任务发送到,而不是一遍又一遍地创建和删除它们?这意味着持久线程无需加入即可重新同步。 我有看起来像这样的代码: namespace { std::vector<std::thread> workers; int total = 4; int arr[4] = {0}; void each_thread_does(int i) { arr[i] += 2; } } int main(int argc, char *argv[]) { …

2
如何设置std :: vector的初始大小?
我有个vector<CustomClass*>向量,我在向量中放入了很多项目,我需要快速访问,所以我不使用列表。如何设置向量的初始大小(例如为20 000个位,所以在插入新的向量时避免复制)?
130 c++  stl 

10
在C ++中传递对指针的引用
据我所知,没有理由不应该允许我将引用传递给C ++中的指针。但是,我这样做的尝试失败了,我也不知道为什么。 这就是我在做什么: void myfunc(string*& val) { // Do stuff to the string pointer } // sometime later { // ... string s; myfunc(&s); // ... } 我收到此错误: 无法将参数1从'std :: string *'转换为'std :: string *&'
130 c++  pointers  reference 

5
何时在多线程中使用volatile?
如果有两个线程访问全局变量,那么许多教程都说要使变量可变,以防止编译器将变量缓存在寄存器中,从而导致无法正确更新。但是,两个都访问共享变量的线程需要通过互斥锁进行保护,不是吗?但是在那种情况下,在线程锁定和释放互斥锁之间,代码处于关键部分,其中只有一个线程可以访问该变量,在这种情况下,变量不需要是可变的? 因此,多线程程序中volatile的用途/目的是什么?



11
让GDB保存断点列表
好的,info break列出了断点,但不能采用可以使用--command重用它们的格式,如本问题所述。GDB是否有一种方法可以将它们转储到可以再次输入的文件中?有时在调试会话中,有必要在建立一组用于测试的断点之后重新启动GDB。 .gdbinit文件具有与--command相同的问题。该信息休息命令不会列出命令,而是供人食用的表。 详细说明,这是info break的示例: (gdb)信息中断 编号类型显示Enb地址什么 1个断点保持y 0x08048517 <foo :: bar(void)+7>
129 c++  c  debugging  gdb  breakpoints 

7
C ++中的多态
据我所知: C ++提供了三种不同类型的多态性。 虚拟功能 函数名称重载 运算符重载 除了以上三种类型的多态性之外,还存在其他类型的多态性: 运行 编译时间 临时多态性 参数多态性 我知道,运行时多态性可以通过以下方式实现虚函数 和静态多态性可以通过以下方式实现模板功能 但是对于其他两个 临时多态性 网站说的参数多态性, 临时多态性: 如果可以使用的实际类型范围是有限的,并且必须在使用前单独指定组合,则这称为临时多态性。 参数多态性: 如果编写所有代码时都没有提及任何特定类型,因此可以与任何数量的新类型透明地使用,则称为参数多态。 我很难理解他们:( 任何人都可以通过示例解释它们吗?我希望这些问题的答案对他们所在大学的许多新学员有帮助。

5
重载成员访问运算符->,。*
据我所知大多数运算符重载,与成员访问运营商外->,.*,->*等。 特别是,什么传递给这些运算符,应该返回什么? 操作员功能(例如operator->(...))如何知道所引用的成员?能知道吗 它甚至需要知道吗? 最后,是否需要考虑任何常量注意事项?例如,当重载类似的东西时operator[],通常将需要const版本和非const版本。成员访问运算符是否需要const和非const版本?

6
为什么带有GCC的x86上的整数溢出会导致无限循环?
以下代码在GCC上进入了无限循环: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } 所以这是要解决的问题:有符号整数溢出在技术上是未定义的行为。但是x86上的GCC使用x86整数指令实现了整数算术-溢出会自动换行。 因此,尽管它是未定义的行为,但我希望它能溢出。但这显然不是事实。那我想念什么? 我使用以下代码编译了此代码: ~/Desktop$ g++ main.cpp -O2 GCC输出: ~/Desktop$ ./a.out 536870912 1073741824 …
129 c++  c  gcc  x86  undefined-behavior 

6
为什么std :: shared_ptr <void>工作
我发现一些代码使用std :: shared_ptr在关机时执行任意清理。起初,我认为此代码可能无法工作,但随后尝试了以下操作: #include &lt;memory&gt; #include &lt;iostream&gt; #include &lt;vector&gt; class test { public: test() { std::cout &lt;&lt; "Test created" &lt;&lt; std::endl; } ~test() { std::cout &lt;&lt; "Test destroyed" &lt;&lt; std::endl; } }; int main() { std::cout &lt;&lt; "At begin of main.\ncreating std::vector&lt;std::shared_ptr&lt;void&gt;&gt;" &lt;&lt; std::endl; std::vector&lt;std::shared_ptr&lt;void&gt;&gt; v; { std::cout &lt;&lt; "Creating …
129 c++  c++11  shared-ptr 


7
在assert中添加自定义消息?
有没有一种方法可以添加或编辑assert引发的消息?我想使用类似 assert(a == b, "A must be equal to B"); 然后,编译器添加line,time等等。 可能吗?
129 c++  assert 

5
静态类成员上未解析的外部符号
简单地说: 我有一个主要由静态公共成员组成的类,因此我可以将仍然必须从其他类/函数调用的相似函数组合在一起。 无论如何,我在类的公共范围内定义了两个静态的无符号char变量,当我尝试在同一类的构造函数中修改这些值时,在编译时出现“无法解析的外部符号”错误。 class test { public: static unsigned char X; static unsigned char Y; ... test(); }; test::test() { X = 1; Y = 2; } 我是C ++的新手,所以轻松一点。我为什么不能这样做?
129 c++  class  static  members 

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.