Questions tagged «c++»

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

3
什么是Objective C ++?[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊不清,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 什么是Objective C ++,我可以在Xcode中使用这种语言吗?


6
虚函数可以具有默认参数吗?
如果我声明一个基类(或接口类)并为其一个或多个参数指定默认值,那么派生类是否必须指定相同的默认值;如果没有,那么默认值将出现在派生类中吗? 附录:我也对在不同的编译器中如何处理此问题以及在这种情况下对“推荐”实践的任何投入感兴趣。
164 c++  c++11  c++03 

11
如何自动将强类型的枚举转换为int?
#include <iostream> struct a { enum LOCAL_A { A1, A2 }; }; enum class b { B1, B2 }; int foo(int input) { return input; } int main(void) { std::cout << foo(a::A1) << std::endl; std::cout << foo(static_cast<int>(b::B2)) << std::endl; } 这a::LOCAL_A是强类型枚举试图实现的目标,但是有一个小的区别:普通枚举可以转换为整数类型,而强类型枚举不能在没有强制转换的情况下做到。 因此,有没有一种方法可以将强类型的枚举值转换为整数类型而无需强制转换?如果是,怎么办?

3
在Stroustrup的示例中,冒号在“返回1:2”中是什么意思?
我不了解冒号的一种特殊用法。 我在Bjarne Stroustrup的《 C ++编程语言》第四版第11.4.4节“调用和返回”的第297页中找到了它: void g(double y) { [&]{ f(y); } // return type is void auto z1 = [=](int x){ return x+y; } // return type is double auto z2 = [=,y]{ if (y) return 1; else return 2; } // error: body too complicated // for return …
163 c++  syntax 

13
D是Java和C ++的可靠替代品吗?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 D语言是否可以替代Java和C ++?成为可信的替代方案将需要什么?我应该学习吗?它值得传福音吗? 我要问的主要原因是,几乎在这里有了新的C ++标准(c ++ 0x),对于我来说,很明显,对于任何了解它的人,该语言已经远远超过了无回报的地步。我知道C / C ++永远不会消失,但是在某些时候我们需要继续前进。甚至COBOL时代已经到来,Java在许多方面都放弃了C ++。下一个是什么?D会付账吗?
163 java  c++  c  d 

7
使用nullptr有什么优势?
这段代码在概念上对三个指针(安全指针初始化)执行相同的操作: int* p1 = nullptr; int* p2 = NULL; int* p3 = 0; 那么,分配指针nullptr比给它们分配值NULLor有0什么好处?
163 c++  c++11  null  c++-faq  nullptr 


8
istringstream,ostringstream和stringstream有什么区别?/为什么不在每种情况下都使用stringstream?
当我会用std::istringstream,std::ostringstream以及std::stringstream为什么不应该我只是用std::stringstream在所有情况(是否有任何的运行时性能问题?)。 最后,这有什么不好的地方(而不是根本不使用流): std::string stHehe("Hello "); stHehe += "stackoverflow.com"; stHehe += "!";


10
我应该将整个对象还是指向对象的指针存储在容器中?
从头开始设计新系统。我将使用STL来存储某些长期存在的对象的列表和地图。 问:我应该确保我的对象具有副本构造函数并将对象的副本存储在我的STL容器中,还是通常更好地自己管理生命和作用域并仅将指向这些对象的指针存储在我的STL容器中? 我意识到这在细节上有些欠缺,但是我正在寻找“理论上”更好的答案(如果存在),因为我知道这两种解决方案都是可行的。 使用指针有两个非常明显的缺点:1)我必须在超出STL的范围内自己管理这些对象的分配/取消分配。2)我不能在堆栈上创建一个临时对象并将其添加到我的容器中。 还有什么我想念的吗?
162 c++  stl  pointers 

5
为什么此循环会产生“警告:迭代3u调用未定义的行为”并输出多于4行?
编译此: #include <iostream> int main() { for (int i = 0; i < 4; ++i) std::cout << i*1000000000 << std::endl; } 并gcc产生以下警告: warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations] std::cout << i*1000000000 << std::endl; ^ 我知道有符号整数溢出。 我无法获得的是为什么i值被该溢出操作破坏了? 我已经阅读了以下答案:为什么在带有GCC的x86上整数溢出会导致无限循环?,但我仍然不清除,为什么出现这种情况-我得到“未定义”是指“任何事情都可能发生”,但有什么的根本原因这个特定的行为? 在线:http://ideone.com/dMrRKR 编译器: gcc (4.8)

4
使用CMake自动将文件夹中的所有文件添加到目标吗?
我正在考虑将跨平台项目从Visual C ++,XCode和makefile中的单独生成管理系统切换到CMake。 我需要的一项基本功能是将目录中的所有文件自动添加到目标。尽管使用make可以轻松做到这一点,但使用Visual C ++和XCode却不容易做到(如果我做错了,请纠正我)。是否可以直接在CMake中进行?怎么样?

3
为什么从字符串常量到'char *'的转换在C中有效但在C ++中无效
C ++ 11标准(ISO / IEC 14882:2011)在§ C.1.1: char* p = "abc"; // valid in C, invalid in C++ 对于C ++,因为指向字符串文字的指针是有害的,因为任何对其进行修改的尝试都将导致崩溃,这是有害的。但是为什么在C语言中有效呢? C ++ 11还说: char* p = (char*)"abc"; // OK: cast added 这意味着如果将强制类型转换添加到第一条语句中,它将变为有效。 为什么强制转换使第二条语句在C ++中有效,它与第一条语句有何不同?还是有害吗?如果是这样,为什么标准说没问题?
162 c++  c  string  c++11  char 

1
什么是string_view?
string_view是添加到C ++ 17 的C ++库基础TS(N3921)中的一项建议功能 据我了解,它是代表某种类型的字符串“概念”的一种类型,它是可以将任何可视内容存储为字符串的任何类型的容器的视图。 这是正确的吗 ? 规范 const std::string&参数类型应变为string_view? 还有string_view要考虑的另一个重要点吗?

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.