c++-faq相关内容

为什么"this"是指针而不是引用?

我正在阅读此问题的答案 C ++的优缺点,并在阅读评论时遇到了这个疑问. 程序员经常发现它混淆了"this"是一个指针,而不是一个引用.另一个困惑是为什么"hello"不是std :: string类型,而是求值为char const *(指针)(在数组到指针的转换之后)– Johannes Schaub-litb 08年12月22日在1:56 那仅表明它没有使用与其他(后来的)语言相 ..
发布时间:2020-05-28 21:15:37 C/C++开发

指向类数据成员":: *"的指针

我碰到了这个奇怪的代码片段,可以很好地编译: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } 为什么为什么C ++具有指向类的非静态数据成员的指针? 此在实际代码中的用途是什么? 解决方案 它是“指向成员的指针"- ..
发布时间:2020-05-28 21:14:39 C/C++开发

什么是< => C ++中的运算符?

当我尝试学习 C ++ 运算符时,我偶然发现了 cppreference.com , * : “好吧,如果它们是C ++中的常用运算符,我最好学习它们".但是我为阐明这个奥秘所做的所有尝试都没有成功.即使在这里,在Stack Overflow上我的搜索也没有运气. 和 C ++ 之间是否存在联系? 如果有的话,这个运算符的作用是什么? *在此期间cpprefere ..
发布时间:2020-05-21 19:54:06 C/C++开发

重载成员访问运算符->,.*

除了成员访问运算符->,.*,->*等之外,我了解大多数运算符重载. 特别是,什么传递给这些运算符,应该返回什么? 操作员函数(例如operator->(...))如何知道引用了哪个成员?能知道吗它甚至需要知道吗? 最后,是否需要考虑任何常量注意事项?例如,当重载operator[]之类的东西时,通常将需要const版本和非const版本.成员访问运算符是否需要const和非co ..
发布时间:2020-05-21 19:20:40 C/C++开发

运算符重载的基本规则和惯用法是什么?

注意:答案是按照特定顺序给出的,但是由于许多用户是根据投票而不是给出时间来对答案进行排序的,因此这是 索引答案 (按最有意义的顺序排列): C ++中运算符重载的一般语法 C ++中运算符重载的三个基本规则 成员与非成员之间的决定 常见的运算符要重载 分配运算符 输入和输出运算符 函数调用运算符 比较运算符 算术运算符 数组下标 类似指针类型的运算符 转化运算符 ..
发布时间:2020-05-21 19:20:34 C/C++开发

为什么“使用命名空间标准"?被认为是不好的做法?

其他人告诉我,用代码编写using namespace std;是错误的,我应该直接使用std::cout和std::cin. 为什么using namespace std;被认为是不良做法?它的效率低下吗?还是冒着声明模棱两可的变量(与std命名空间中的函数具有相同名称的变量)的风险?它会影响性能吗? 解决方案 这与性能完全无关.但是请考虑一下:您正在使用两个名为Foo和Bar的库 ..
发布时间:2020-05-16 19:50:10 C/C++开发

什么是移动语义?

我刚听完软件工程广播,内容涉及 C ++ 0x .大多数新功能对我来说都是有意义的,除了一个功能,我现在对C ++ 0x感到非常兴奋.我仍然没有得到移动语义 ...这到底是什么? 解决方案 我发现用示例代码理解移动语义最简单.让我们从一个非常简单的字符串类开始,该类仅包含指向堆分配的内存块的指针: #include #include cl ..
发布时间:2020-05-12 19:23:03 C/C++开发

我应该包括< xxxx.h>或< cxxxx>在C ++程序中?

我应该在C ++程序中包含什么, stdio.h 或 cstdio ?为什么? 为什么两个头文件提供相同的功能? 标准对此有何评价? 我应该如何处理其他此类标题,是否有我应该遵循的基本规则? 解决方案 请考虑以下计划: 示例1: #include ..
发布时间:2018-08-02 10:03:36 C/C++开发

价值,价值,价值,价值和价值是什么?

在C ++ 03中,表达式是 rvalue 或 lvalue 。 在C ++ 11,表达式可以是: rvalue 左值 xvalue glvalue prvalue 两个类别已经成为五个类别。 这些新类型的表达式是什么? 这些新类别与现有的rvalue和lvalue类别? C ++ 0x中的rvalue和lvalue类别是否与C ++ 03中相同? 为什么需要 ..
发布时间:2017-10-07 15:38:05 C/C++开发

在哪里可以找到标准容器和算法的所有异常保证?

是的,我看过 C ++标准(或者草稿),但是我没有发现STL容器提供的任何全面的异常保证。我可以找到的是有些某些类型的功能的部分不完整的说明。或者也许它在那里,但我只是没有找到它,我不知道。 注意:我是 em>不 要求人们可以想到的所有保证的清单,这基本上是在这个问题。 我正在寻找这个信息的权威来源本身 - 或者最好是源的免费版本(例如标准草案),我可以或多或少地将其视为官方的。 ..
发布时间:2017-09-29 11:18:14 C/C++开发

C ++是否支持'finally'块? (这个我听到的“RAII”是什么?)

C ++是否支持“ 终于 '阻止? 什么是 RAII成语 ? C ++的RAII成语与 C#的'使用'语句 ? 解决方案 不,C ++不支持'finally'块。原因是C ++反而支持RAII:“资源获取正在初始化” - 一个恶劣的名字 † 是一个非常有用的概念。 想法是,对象的析构函数负责释放资源。当对象具有自动存储持续时间时,当创建对象的析构函数被创建时,它将被调用 ..
发布时间:2017-09-27 21:16:34 C/C++开发

如何遍历/迭代STL Map?

需要知道如何遍历stl地图。我不想使用它的键。我不在乎订单,只是一种访问它包含的所有元素的方法。有没有办法这样做? 解决方案 是的,你可以遍历标准库 code>。这是用于遍历地图的基本方法,并用作遍历任何标准库集合的指导: C ++ 03 / C ++ 11: #include #include #include 使 ..
发布时间:2017-05-21 19:32:25 C/C++开发

C ++程序员应该使用什么C ++成语?

C ++程序员知道什么C ++成语? 通过C ++成语,我的意思是设计模式或做某些只适用于C ++或更多适用于C ++比大多数其他语言。 为什么要使用成语,成语怎么做? 解决方案 这是一个列表。如果我不得不选择一对,我可能会用奇怪的循环模板模式或虚拟构造函数。 ..
发布时间:2017-05-14 09:52:52 C/C++开发

在类型名称后面的括号是否与新的有所不同?

如果'Test'是普通类,是否有任何差异: Test * test = new Test; 和 Test * test = new Test(); 解决方案 影响你的代码的行为。以下大部分摘自对“旧新Thing“第条。 有时新操作符返回的内存将被初始化,有时它不会取决于你是新的类型up是 POD(普通旧数据),或者如果它是一个类 ..
发布时间:2016-12-29 15:38:21 C/C++开发

如何停止C ++控制台应用程序立即退出?

最近,我一直在尝试从此网站学习C ++。不幸的是,每当我尝试运行一个代码示例,我看到该程序打开约半秒,然后立即关闭。有没有办法阻止程序立即关闭,以便我可以看到我的努力的成果? 解决方案 编辑:正如Charles Bailey在下面的注释中正确地指出,如果有在 stdin 中缓冲的字符,这将不起作用,并且真的没有好的方法解决这个问题。如果您使用附加的调试器运行,请 John Dibling的 ..
发布时间:2016-12-28 17:35:20 C/C++开发

编译器为类创建的所有成员函数是什么?这是否一直发生?

编译器为类创建的所有成员函数是什么?这是否一直发生?像析构函数。 我关心的是是否为所有类创建,为什么需要默认构造函数? 解决方案 +98/03 如果需要, 默认构造函数,除非您声明自己的任何构造函数。 除非您声明自己的版本,否则编译器将为您生成 复制 构造函数。 除非您声明自己的版本,否则编译器将为您生成 复制 赋值运算符。 编译器将为您生成析构函数,除非您声明自己的。 ..
发布时间:2016-12-22 18:02:48 C/C++开发

默认函数参数的有效表达式

对于函数或成员函数中的默认参数,有效表达式的所有可能类型是什么? 解决方案 编辑 编译期间的默认参数是在类型正确性等方面进行评估,但是它们不被计算,并且直到运行时间才发生分配。您可以将尚未定义的类的构造函数指定为默认参数,只要在函数使用点定义类就可以了...实际的计算/赋值在函数调用期间发生,而不是在点处 c $ c> #include vo ..
发布时间:2016-10-27 01:37:11 C/C++开发