Questions tagged «c++»

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


2
在3种主要的C ++编译器中,程序进行了不同的编译。哪一个是对的?
作为对我之前的问题的有趣的跟进(尽管不是很重要), 为什么在声明变量时C ++为什么允许我们在括号中将变量名括起来? 我发现将括号中的声明与注入的类名功能结合使用可能会导致有关编译器行为的令人惊讶的结果。 看一下以下程序: #include <iostream> struct B { }; struct C { C (){ std::cout << "C" << '\n'; } C (B *) { std::cout << "C (B *)" << '\n';} }; B *y = nullptr; int main() { C::C (y); } 使用g ++ 4.9.2进行编译会给我以下编译错误: main.cpp:16:10: error: cannot …

12
const char *串联
我需要串联两个这样的const字符: const char *one = "Hello "; const char *two = "World"; 我该怎么做呢? 我char*从具有C接口的第三方库传递了这些,所以我不能简单地使用它们std::string。

12
C在哪里不是C ++的子集?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 改善这个问题 我读过很多书,其中C是C ++的子集。 有些书说C是C ++的子集,除了一些小细节。 在什么情况下代码将用C而不是C ++进行编译,在什么情况下?
116 c++  c 


2
boost :: algorithm :: join的一个很好的例子
我最近想使用boost :: algorithm :: join,但是我找不到任何用法示例,也不想花很多时间学习Boost Range库只是为了使用这一功能。 谁能提供一个很好的示例,说明如何在字符串容器上使用join?谢谢。
116 c++  string  boost  join 

5
使用外部模板(C ++ 11)
图1:功能模板 TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //... } //explicit instantation template void f<T>(); Main.cpp #include "TemplHeader.h" extern template void f<T>(); //is this correct? int main() { f<char>(); return 0; } 这是正确的使用方法extern template,还是仅将关键字用于类模板,如图2所示? 图2:类模板 TemplHeader.h template<typename T> class foo { T f(); }; TemplCpp.cpp template<typename T> …
116 c++  templates  c++11  extern 

5
大阵列尺寸上的分段错误
以下代码在2Gb机器上运行但在4GB机器上运行时出现分段错误。 int main() { int c[1000000]; cout << "done\n"; return 0; } 阵列的大小仅为4Mb。在c ++中可以使用的数组大小是否有限制?

17
在C ++中通过引用传递时参数的默认值
当我们通过引用传递参数时,是否可以为函数的参数提供默认值。在C ++中 例如,当我尝试声明如下函数时: virtual const ULONG Write(ULONG &State = 0, bool sequence = true); 当我这样做时会出现错误: 错误C2440:“默认参数”:无法从“ const int”转换为“ unsigned long&”非引用“ const”的引用不能绑定到非左值

2
我可以将src /中的所有.cpp文件编译为obj /中的.o,然后链接到./中的二进制文件吗?
我的项目目录如下所示: /project Makefile main /src main.cpp foo.cpp foo.h bar.cpp bar.h /obj main.o foo.o bar.o 我希望makefile可以将.cpp文件/src夹中的所有文件编译为文件夹.o中的/obj文件,然后将所有.o文件链接/obj到顶级文件夹中的输出二进制文件中/project。 我几乎没有使用Makefile的经验,也不确定要搜索什么来完成此操作。 另外,这是执行此操作的“好方法”,还是我要尝试执行的更标准的方法?

5
内部类可以访问私有变量吗?
class Outer { class Inner { public: Inner() {} void func() ; }; private: static const char* const MYCONST; int var; }; void Outer::Inner::func() { var = 1; } const char* const Outer::MYCONST = "myconst"; 当我使用类Outer :: Inner'进行编译时,这没有错误,而没有名为`var'的成员
116 c++  inner-classes 


5
什么是.h.gch文件?
我最近有一个课堂项目,必须用G ++编写程序。 我使用了一个makefile,由于某种原因,它偶尔会留下一个.h.gch文件。 有时,这不会影响编译,但是每隔一段时间,它将导致编译器针对已解决或没有意义的问题发出错误。 我有两个问题: 1)什么是.h.gch文件,其用途是什么?和 2)为什么不清理会引起此类问题?
116 c++  g++ 

4
避免在for循环中使用if语句?
我有一个叫做的类Writer,它具有如下功能writeVector: void Drawer::writeVector(vector<T> vec, bool index=true) { for (unsigned int i = 0; i < vec.size(); i++) { if (index) { cout << i << "\t"; } cout << vec[i] << "\n"; } } 我正在尝试没有重复的代码,同时仍然担心性能。在函数中,即使结果始终相同if (index),我for也会在-loop的每一轮中进行检查。这与“担心性能”相反。 通过将检查放在我的for-loop 之外,可以轻松避免这种情况。但是,我将获得大量重复代码: void Drawer::writeVector(...) { if (index) { for (...) { cout << i …

5
有C ++反编译器吗?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 3年前关闭。 改善这个问题 我有一个丢失了C ++源代码的程序。有没有好的C ++反编译器? 我已经遇到过回旋镖。

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.