在C中,当您想要进行通用编程时,您唯一支持的语言选项是宏。它们工作得很好,而且被广泛使用,但是如果你能用内联函数或常规函数来过活,你就会感到气馁。(如果使用gcc,也可以使用,这样可以避免双重评估"bug“。。)
然而,C++通过创建模板消除了所谓的宏的“坏处”。对于一种成熟的庞大的语言-- C++ (我估计它的特性和语言结构必须是C的4倍或5倍)--我还是有点陌生,而且通常都喜欢宏或gcc语句表达式,但越来越多的人要求用模板代替它们。这就引出了一个问题:一般来说,在C++中进行通用编程时,会产生更小的可执行文件:宏还是模板?
如果你说,“尺寸不重要,选择安全而不是尺寸”,我会继续在那
前几天,我发现这是可能的:
template <class T> struct base {};
struct derived: base<int> {};
int main()
{
// The base class template is accessible here
typename derived::base<double> x;
// from the comments, even this works
typename derived::derived::base<double>::base<
我很难理解C++模板模板参数的语法。我理解为什么它们是有用的,根据的出色描述,我只是发现它们的语法很难理解。取自上述网站的两个示例(还有其他示例):
template <typename T, template <typename> class Cont>
class Stack;
和
template <template <typename,typename> class Cont>
class Wrapper3;
显然,如果不了解这种语法背后的原理,就不可能对这些声明进行泛化。记忆更难,而且似乎也没有多大帮助。
编辑:我意识到我对一个问题的尝
我正试图使用汇编程序代码-- ARMv7-a来实现C++函数。现在我遇到一个程序,我不知道如何在程序集中实现C++函数模板。我尝试用-S -O1标志编译源代码,以查看生成的程序集,但无法理解。有谁能简单地告诉我C++模板是如何被转换成组装代码的?只需使用以下简单函数作为示例:
template<typename T>
T f(T a) {
return a + 1;
}
如果您发现任何其他函数更容易进行解释,请这样做。谢谢!
伙计们,我正在做“C++编程语言第三版”的练习。在第340页上有一个函数的示例:
template <class T, class C = Cmp<T> > // Here is a default argument
// But as far as I'm concerned it's illegal to have a default argument in
// a function template
int compare (const String<T>& str1, const String<T>
我正在阅读关于C++模板的文章,并希望对比计算从0到N的函数的两个不同的实现。
不幸的是,我有一些问题,我想通过例子来回答几个问题:
朴素和的代码:
#include <stdio.h>
template<int N>
struct Sum {
// Copied the implementation idea from Scott Meyers book
// "Effective C++". Is there a better way?
enum { value = N + Sum<N - 1>::value }
我习惯于像这样声明各种函数:
int f(int n, ...);
在阅读C++编程语言时,我发现书中的声明省略了逗号:
int f(int n...); // the comma has been omitted
当我试图使用C编译器编译这个语法时,这个语法似乎是特定于C++的,因为我得到了这个错误:
test.c:1:12: error: expected ‘;’, ‘,’ or ‘)’ before ‘...’ token int f(int n...);
写int f(int n, ...)和int f(int n...有什么区别吗?
为什么这个语法增加了C++?
我精通各种语言的编程。我一直在使用MATLAB实现我的研究代码(在过去的几个月里),这是我第一次真正注意到MATLAB v$ C执行速度的差异(就像我喜欢它惊人的快速原型功能一样)。
我希望选择C++并开始在我的研究中使用它。我意识到了OOP,并编写了相当多的Java (相对较长的back)和C++ (甚至更长的back)。我现在真的想深入了解C++,因此需要在相同的资源上提供建议:
What C++ things I need to pick (STL和.)为了更好地利用C++?,什么是好的入门教程/手册?C++的数值/科学库是什么?GSL?是否有用于C++的Scipy/Numpy的等效(功