c++03相关内容
如果我有在C ++ 03中编写的库,并将其编译为静态库,那么我可以在C ++ 11中使用它吗?也是相反的可能(C ++ 11静态库与C ++ 03)。 更新: 编译器I am using is clang or LLVM 解决方案 这主要取决于你如何在库中使用C ++标准库。 如果您根本不使用它,那么您不太可能遇到任何问题。 如果您使用 libstdc ++ ,那么您可
..
一位同事告诉我,在以下类型中,所有成员在记忆中都有不明的排序(相对于彼此)。 我怀疑这一点,因为他们都 $ b foo {public:int x; public:int y; public:int z; }; 解决方案 您的同事对于C ++ 03: / p> [C ++ 03:9.2 / 12]: (非联合)类(不包含中间访问限定符),以便稍
..
如何在编译时测试类B是否来自std :: vector? template struct is_derived_from_vector { static const bool value = ???? }; 如何在编译时测试类B是否派生自模板族? 模板 class Family> s
..
在C ++中,以下是否有未定义的行为: int i = 0; (i + = 10)+ = 10; 在我的回答 在C和C ++中+ =的结果是什么?这里的细微之处是,默认响应似乎是“是”,而正确的答案是“它取决于C ++标准的版本”。 如果它依赖于标准的版本,请解释UB在哪里和不在哪里。 解决方案 tl; dr :(i + = 10)+中执行的修改
..
TTBOMK,有三种方式在C ++中初始化变量。 int x = 0; // C-like initialization int x(0); //构造器初始化 int x {0}; //统一初始化 为C ++ 11提供了统一的初始化,用于初始化不同类型的变量,这在C ++ 03中需要不同的语法。 c样,构造函数和均匀初始化之间有什么区别? 解决方案
..
C ++代码可以同时符合 C ++ 03 标准和 C ++ 11 标准,但根据正在编译的标准执行不同的操作? 解决方案 答案是肯定的。在正面有: 以前隐式复制对象的代码现在会隐式移动它们。 在消极方面,标准附录C列出了几个例子。 字符串文字 #define u8“abc” const char * s = u8“def”; //以前的“abcdef”,现在为“d
..
根据C ++'03标准2.3 / 1: 在进行任何其他处理之前, ------ -------------------------------------------------- -------------------- | trigraph |替换| trigraph |替换| trigraph |替换| ---------------------------------
..
我知道在C ++ 03中,技术上 std :: basic_string 模板不需要有连续的内存。然而,我很好奇现代编译器实际利用这种自由有多少实现存在。例如,如果想要使用 basic_string 接收一些C API的结果(如下面的示例),似乎只是为了将它分配给一个向量 例如: DWORD valueLength = 0; DWORD类型; LONG errorCheck
..
我正在进行一些维护工作,并且遇到以下情况: std :: string s; s.resize(strLength); // strLength是一个size_t,其中有一个C字符串的长度。 memcpy(& s [0],str,strLength); 我知道使用& s [0]是安全的,如果它是一个std :: vector,但是这是一个安全使用std :
..
如果我声明一个基类(或接口类)并为其一个或多个参数指定一个默认值,那么派生类必须指定相同的默认值,如果没有,那么默认值将显示在派生类中? 附录:我也想了解如何在不同的编译器中处理这些问题,以及在这种情况下对“推荐”做法的任何输入。 解决方案 虚拟可能有默认值。基类中的默认值不会被派生类继承。 使用哪个默认值 - 即基类或派生类' - 由用于调用函数的静态类型确定。如果通过基类对
..
我在C ++中有以下类: class a { const int b [2] //其他的东西如下 //这里是构造函数 a(void);问题是,如何在初始化列表中初始化b,如果初始化列表中没有b,我不能在构造函数的正文中初始化它,因为b const ? 不工作: a :: a(void): b([2,3]) { //其他初始化资料 }
..
我对我的代码发布了一个问题,其中只有 #include 指令如下: #include 我的老师告诉我这样做,但在评论部分我被告知我不应该 为什么? 解决方案 似乎是Stack Overflow上越来越常见的东西,也许是在当前学年新增加到国家课程中的东西。 我想象的优
..
C ++容器的迭代器无效规则是什么? 最好是以汇总列表格式。 (注意:这是一个条目,用于 Stack Overflow的C ++常见问题。如果您想批评在此表单中提供常见问题解答的概念,则在发起所有这一切的meta上的发布将是这样做的地方。这个问题的答案在 C ++聊天室,其中常见问题的想法从第一位开始,所以您的答案很可能会由想出想法的人阅读。) 解决方案 C ++ 11 (来源
..
我建立了一个工作的C库,使用常量,在定义为头文件 typedef结构ÿ{ 工会{ 结构bit_field位; uint8_t有原料[4]; } X; } CardInfo;静态常量CardInfo Y_CONSTANT = {.RAW = {0,0,0,0}}; 我知道 .RAW 初始化是C仅语法。 我如何的方式,这样我可以在C和C使用它们++定义在他们工会的常量。
..
我需要检查,如果一个货柜擦除函数返回迭代器。我通常检查通过例如函数签名促进。但是,在升压级的情况下(例如flat_set)擦除继承,因此不会被检查发现。但我真的需要它。
..
我有一个对象类型如下: 结构T { INT X; 布尔ÿ; }; 和他们这样的容器:的std ::矢量< T>伏; 和一个强烈的愿望,确定—的在一个语句的—任何诉元素是否具有Ÿ==真。这可能涉及到的std :: find_if 。 我的理解是,的std ::绑定和的boost ::绑定是成员的功能的,不能适用于成员数据。 由于我不喜欢他们,
..
假设我有一个函数,它接受某种形式的predicate的: 无效美孚(升压::功能<布尔(INT,INT,INT)GT; predicate); 如果我想用predicate总是返回true称呼它,我可以定义一个辅助函数:布尔AlwaysTrue(INT,INT,INT){返回true; } ... 美孚(升压::绑定(AlwaysTrue)); 不过,反正是有,而无需定义一个单独的
..
我在依赖的Boost(
..
我记得读这里面的方法声明为static变量不是线程安全的。 (请参见怎么样Meyer的单?由
..
考虑一下: 的#include<&iostream的GT; #包括LT&;地图和GT; #包括LT&;串GT; #包括LT&;升压/转让/ list_of.hpp> 使用boost ::分配:: map_list_of;常量的std ::地图< INT,性病::地图< INT,CHAR和GT; >测试= map_list_of (100,map_list_o
..