Questions tagged «c++»

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

6
将未知大小的std :: array传递给函数
在C ++ 11中,我将如何编写采用已知类型但大小未知的std :: array的函数(或方法)? // made up example void mulArray(std::array<int, ?>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } } // lets imagine these being full of numbers std::array<int, 17> arr1; std::array<int, 6> arr2; std::array<int, 95> arr3; mulArray(arr1, 3); mulArray(arr2, 5); mulArray(arr3, 2); …
97 c++  c++11  stdarray 

3
链接C ++ 17,C ++ 14和C ++ 11对象是否安全
假设我有三个编译对象,它们都是由同一编译器/版本生成的: A是使用C ++ 11标准编译的 B用C ++ 14标准编译 C用C ++ 17标准编译 为简单起见,我们假设所有标头均使用 C ++ 11编写,仅使用其语义在所有三个标准版本之间均未改变的构造,因此任何相互依赖关系都可以通过标头包含正确表达,并且编译器不反对。 这些对象是哪种组合,链接到单个二进制文件不安全吗?为什么? 编辑:涵盖主要编译器(例如gcc,clang,vs ++)的答案是受欢迎的
97 c++  c++11  linker  c++14  abi 

8
通过命令行在OS X上编译简单的Hello World程序
我有一个简单的hello world示例,尝试在OS X上进行编译,名为hw.cpp: #include <iostream> #include <string> using namespace std; int main() { cout << "Hello world!" << endl; return 0; } 我想使用进行编译gcc,但没有成功。我也想听听其他选项,例如使用Xcode吗?
97 c++  xcode  macos 

9
main()方法如何在C中工作?
我知道有两种不同的签名可以编写main方法- int main() { //Code } 或用于处理命令行参数,我们将其写为- int main(int argc, char * argv[]) { //code } 在C++我知道我们可以重载的方法,但是在C编译器如何处理这两个不同的签名main功能?
96 c++  c 

9
在C ++中将代码清除为printf size_t(或:在C ++中与C99的%z最接近)
我有一些C ++代码可以显示size_t: size_t a; printf("%lu", a); 我希望在32位和64位体系结构上进行编译而不会发出警告。 如果这是C99,则可以使用printf("%z", a);。但是AFAICT %z在任何标准C ++方言中都不存在。所以我要做 printf("%lu", (unsigned long) a); 这真的很丑。 如果size_t语言中没有内置的用于打印s的功能,我想知道是否有可能编写一个printf包装器或诸如此类的东西,以便在size_ts 上插入适当的强制转换,从而消除虚假的编译器警告,同时仍保持良好的警告。 有任何想法吗? 编辑以弄清为什么我使用printf:我有一个相对较大的代码库正在清理。它使用printf包装器执行“写警告,将其记录到文件中,并可能由于错误而退出代码”之类的操作。我也许能够使用cout包装器来聚集足够的C ++-foo,但是我不想改变程序中的每个warn()调用只是为了摆脱一些编译器警告。
96 c++  printf  size-t 



4
Qt中的内存管理?
我对Qt还是很陌生,想知道一些有关内存管理和对象生命的基本知识。什么时候需要删除和/或销毁我的对象?这是自动处理的吗? 在下面的示例中,我需要删除哪些对象?发生实例变量什么myOtherClass时候myClass被破坏?如果我根本不删除(或销毁)对象,会发生什么?这会成为记忆问题吗? MyClass.h class MyClass { public: MyClass(); ~MyClass(); MyOtherClass *myOtherClass; }; MyClass.cpp MyClass::MyClass() { myOtherClass = new MyOtherClass(); MyOtherClass myOtherClass2; QString myString = "Hello"; } 如您所见,这是个非常容易上手的东西,但是我在哪里可以以简单的方式了解到呢?
96 c++  qt  memory  object 

3
为什么sizeof int是错误的,而sizeof(int)是正确的呢?
我们知道这sizeof是一个用于计算任何数据类型和表达式的大小的运算符,并且当操作数是表达式时,可以省略括号。 int main() { int a; sizeof int; sizeof( int ); sizeof a; sizeof( a ); return 0; } 第一种用法sizeof是错误的,而其他用法是正确的。 使用gcc进行编译时,将显示以下错误消息: main.c:5:9: error: expected expression before ‘int’ 我的问题是,为什么C标准不允许这种操作。会sizeof int引起歧义吗?
96 c++  c  sizeof 

2
在C ++中“毒害函数”是什么意思?
在斯科特·舒尔(Scott Schurr)在CppCon上的演讲“介绍constexpr”结束时,他问“有没有办法毒害某个功能”?然后,他解释说可以通过以下方式(尽管以非标准方式)完成此操作: 把一个throw在constexpr功能 宣布未解决 extern const char* 引用未解决extern的throw 我感觉自己在这里有些深奥,但我很好奇: “使功能中毒”是什么意思? 他概述的技术的意义/用处是什么?
96 c++  constexpr 

3
为什么没有std :: stou?
C ++ 11添加了一些新的字符串转换功能: http://en.cppreference.com/w/cpp/string/basic_string/stoul 它包括stoi(字符串到int),stol(字符串到long),stoll(字符串到long long),stoul(字符串到unsigned long),stoull(字符串到unsigned long long)。在没有stou(字符串到无符号)的情况下值得注意。是否有某些原因是不需要的,但所有其他原因都是? 相关:C ++ 11中没有“ sto {short,unsigned short}”函数吗?
96 c++  string  c++11  std 

15
将模板化的C ++类拆分为.hpp / .cpp文件-有可能吗?
我在尝试编译在.hpp和.cpp文件之间分割的C ++模板类时遇到错误: $ g++ -c -o main.o main.cpp $ g++ -c -o stack.o stack.cpp $ g++ -o main main.o stack.o main.o: In function `main': main.cpp:(.text+0xe): undefined reference to 'stack<int>::stack()' main.cpp:(.text+0x1c): undefined reference to 'stack<int>::~stack()' collect2: ld returned 1 exit status make: *** [program] Error 1 这是我的代码: stack.hpp: #ifndef _STACK_HPP #define …

14
如何从C ++中的字符串中删除某些字符?
例如,我有一个用户输入电话号码。 cout << "Enter phone number: "; INPUT: (555) 555-5555 cin >> phone; 我想从字符串中删除“(”,“)”和“-”字符。我看过字符串删除,查找和替换功能,但是我只看到它们基于位置进行操作。 我是否可以使用字符串函数来传递字符“(”,并删除字符串中的所有实例?
96 c++  string  character 

6
为什么将值分配给位字段却没有返回相同的值?
我在Quora帖子中看到了以下代码: #include <stdio.h> struct mystruct { int enabled:1; }; int main() { struct mystruct s; s.enabled = 1; if(s.enabled == 1) printf("Is enabled\n"); // --> we think this to be printed else printf("Is disabled !!\n"); } 在C和C ++中,代码的输出都是意外的, 被禁用 !! 尽管在那篇文章中给出了与“符号位”相关的解释,但我无法理解,我们可能会设置一些东西,然后又不能按原样反映。 有人可以给出更详细的解释吗? 注意:两个标签C 和 C ++因为它们的描述位域的标准略有不同,所以是必需的。请参阅有关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.