Questions tagged «c++»

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

5
如何在C ++中使用数组?
C ++从C继承了数组,几乎可以在任何地方使用它们。C ++提供更易于抽象使用和更不容易出错(std::vector<T>因为C ++ 98和std::array<T, n>自C ++ 11),因此需要对阵列不会出现相当经常,因为它在C.确实但是,当读取遗留编写代码或与用C编写的库进行交互,您应该对数组的工作原理有把握。 该常见问题解答分为五个部分: 类型级别的数组和访问元素 数组创建和初始化 分配和参数传递 多维数组和指针数组 使用数组时的常见陷阱 如果您觉得本常见问题解答中缺少重要的内容,请写一个答案并将其链接为附加部分。 在下文中,“数组”表示“ C数组”,而不是类模板std::array。假定具备C声明符语法的基本知识。请注意,面对异常,手动使用new和delete如下所述是非常危险的,但这是另一个FAQ的主题。 (注意:这本来是Stack Overflow的C ++ FAQ的一个条目。如果您想批评以这种形式提供FAQ的想法,则可以在开始所有这些操作的meta上进行发布。)该问题在C ++聊天室中进行监控,该问题最初是从FAQ想法开始的,所以提出这个想法的人很可能会读懂您的答案。)

19
我在什么情况下使用malloc和/或new?
我看到在C ++中有多种分配和释放数据的方法,而且我了解,当您调用malloc时应调用,free并且在使用new运算符时应与之配对,delete将两者混合使用是错误的(例如,调用free()已创建的内容)与new操作员联系),但我不清楚在实际程序中何时应使用malloc/ free以及何时应使用new/ delete。 如果您是C ++专家,请让我知道您在这方面遵循的经验法则或惯例。


21
如何在C ++中使用PI常量
我想在某些C ++程序中使用PI常数和三角函数。我得到的三角函数include <math.h>。但是,此头文件中似乎没有PI的定义。 如何在不手动定义的情况下获取PI?
476 c++  trigonometry 

17
在std :: vector上进行迭代:无符号vs有符号索引变量
在C ++中迭代向量的正确方法是什么? 考虑下面的两个代码片段,这一段效果很好: for (unsigned i=0; i < polygon.size(); i++) { sum += polygon[i]; } 还有这个: for (int i=0; i < polygon.size(); i++) { sum += polygon[i]; } 产生warning: comparison between signed and unsigned integer expressions。 我是C ++领域的新手,所以unsigned变量对我来说有点令人恐惧,我知道unsigned如果使用不正确,变量可能很危险,所以-这正​​确吗?
469 c++  stl  unsigned  signed 

30
为什么该程序被三个C ++编译器错误地拒绝?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我在编译我编写的C ++程序时遇到了一些困难。 该程序非常简单,据我所知,它符合C ++标准中列出的所有规则。我已经阅读了两次完整的ISO / IEC 14882:2003,以确保。 该程序如下: 这是尝试使用Visual C ++ 2010编译此程序时收到的输出: c:\dev>cl /nologo helloworld.png cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172 沮丧的是,我尝试了g ++ 4.5.2,但同样没有帮助: c:\dev>g++ helloworld.png helloworld.png: …

20
以编程方式查找计算机上的内核数
有没有一种方法可以以平台无关的方式确定C / C ++中一台计算机有多少个内核?如果不存在这样的问题,那么如何在每个平台上确定它(Windows / * nix / Mac)?
464 c++  c 


12
什么时候使用reinterpret_cast?
我对reinterpret_castvs 的适用性不感到困惑static_cast。根据我的阅读,一般规则是在编译时可以解释类型的情况下使用静态强制转换,因此使用单词static。这是C ++编译器内部也用于隐式强制转换的强制转换。 reinterpret_cast适用于两种情况: 将整数类型转换为指针类型,反之亦然 将一种指针类型转换为另一种。我得到的一般想法是,这是不可移植的,应该避免。 我有点困惑的是我需要的一种用法,我从C调用C ++,C代码需要保留在C ++对象上,因此基本上它包含一个void*。应该使用哪种强制转换在void *和类型之间进行转换? 我已经看到了这两个的使用static_cast和reinterpret_cast?虽然从我一直阅读的内容来看static,由于转换可以在编译时进行,所以看起来更好。虽然它说用来reinterpret_cast从一种指针类型转换为另一种指针类型?
459 c++  casting 

6
Typedef函数指针?
Наэтотвопросестьответына 堆栈溢出нарусском:Какработает的typedefвэтомкоде? 我正在学习如何动态加载DLL,但我不明白的是这一行 typedef void (*FunctionFunc)(); 我有几个问题。如果有人能够回答他们,我将不胜感激。 为什么typedef用? 语法看起来很奇怪;之后void应该没有函数名称或其他名称吗?它看起来像一个匿名函数。 是否创建了函数指针来存储函数的内存地址? 所以我现在很困惑;你能为我澄清一下吗?
458 c++  c  pointers  typedef 


4
错误:将xxx作为xxx的“ this”参数传递会丢弃限定符
#include <iostream> #include <set> using namespace std; class StudentT { public: int id; string name; public: StudentT(int _id, string _name) : id(_id), name(_name) { } int getId() { return id; } string getName() { return name; } }; inline bool operator< (StudentT s1, StudentT s2) { return s1.getId() < s2.getId(); …
456 c++ 



18
使用标准C ++ / C ++ 11 / C检查文件是否存在的最快方法?
我想找到一种检查标准C ++ 11,C ++或C中是否存在文件的最快方法。我有成千上万个文件,在对它们进行处理之前,我需要检查所有文件是否都存在。我可以写些什么而不是/* SOMETHING */下面的函数? inline bool exist(const std::string& name) { /* SOMETHING */ }
453 c++  c  file  stream 

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.