问题标签 [c++-faq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - const int*、const int * const 和 int const * 有什么区别?
我总是搞砸如何正确使用const int*
,const int * const
和int const *
。是否有一套规则来定义你能做什么和不能做什么?
我想知道在分配、传递给函数等方面的所有注意事项。
c++ - 为什么派生模板类不能访问基模板类的标识符?
考虑:
我无法使用 GCC g++ 3.4.4 (cygwin) 编译它。
在将这些转换为类模板之前,它们是非泛型的,派生类能够看到基类的静态成员。这是 C++ 规范要求中的可见性损失还是我需要采用的语法更改?
我知道每个实例化Base<T>
都会有它自己的静态成员“ ZEROFILL
”和“ NO_ZEROFILL
”,它们是不同的变量Base<float>::ZEROFILL
,Base<double>::ZEROFILL
但我真的不在乎;常量用于代码的可读性。我想使用静态常量,因为它在名称冲突方面比宏或全局更安全。
c++ - 构造函数初始化列表评估顺序
我有一个带有一些参数的构造函数。我曾假设它们是按列出的顺序构建的,但在一种情况下,它们似乎是反向构建的,导致中止。当我颠倒参数时,程序停止中止。这是我正在使用的语法示例。问题是,在这种情况下,a_ 需要在 b_ 之前初始化。能保证施工顺序吗?
例如
c++ - 在 C++ 中使用 bool/fail 将字符串转换为 int
我有一个std::string
它可以是一个字符串或一个值(例如0
)。
将失败转换std::string
为int
具有失败能力的最佳或最简单的方法是什么?我想要 C# 的 C++ 版本Int32.TryParse
。
c++ - 什么是外联动和内联动?
我想了解外部联系和内部联系以及它们的区别。
我也想知道是什么意思
const
默认情况下,变量在内部链接,除非另外声明为extern
.
c - 定义和声明有什么区别?
两者的含义都让我无法理解。
c++ - 为什么是“使用命名空间标准;” 被认为是不好的做法?
其他人告诉我,using namespace std;
用代码编写是错误的,我应该直接使用std::cout
and std::cin
。
为什么被using namespace std;
认为是不好的做法?它是效率低下还是有可能声明模棱两可的变量(与std
命名空间中的函数具有相同名称的变量)?它会影响性能吗?
c++ - 特定成员的模板专业化?
是否可以专门化模板类的特定成员?就像是:
当然,此代码无效。
c++ - 哪些 iomanip 操纵器是“粘性的”?
我最近在创建 a 时遇到了问题stringstream
,因为我错误地假设std::setw()
每次插入都会影响字符串流,直到我明确更改它。但是,插入后它始终未设置。
所以,我有几个问题:
- 为什么会
setw()
这样? - 其他机械手也这样吗?
std::ios_base::width()
和之间的行为有区别std::setw()
吗?- 最后是否有明确记录这种行为的在线参考资料?我的供应商文档(MS Visual Studio 2005)似乎没有清楚地表明这一点。
c++ - 为什么非常量引用不能绑定到临时对象?
为什么不允许获取对临时对象的非常量引用,哪个函数getx()
返回?显然,这是 C++ 标准禁止的,但我对这种限制的目的感兴趣,而不是对标准的引用。
- 很明显,对象的生命周期不能成为原因,因为C++ 标准不禁止对对象的常量引用。
- 很明显,上述示例中的临时对象不是常量,因为允许调用非常量函数。例如,
ref()
可以修改临时对象。 - 此外,
ref()
允许您欺骗编译器并获得指向此临时对象的链接,从而解决了我们的问题。
此外:
他们说“将一个临时对象分配给 const 引用会延长该对象的生命周期”和“尽管对非 const 引用什么也没说”。我的附加问题。以下分配是否会延长临时对象的生命周期?