牛卧堂MCU技术交流
标题:
C++11这些令人无比愉悦的改变(7) -- auto
[打印本页]
作者:
admin
时间:
2013-12-24 10:00
标题:
C++11这些令人无比愉悦的改变(7) -- auto
auto不是一个新事物,在遥远的C年前就早已有之,它用来建议将一个变量放到寄存器里,这样可以加快运算速度。
然而,编译器早已聪明如斯,断然知道哪些变量放到寄存器比较好,
也断然不需要程序员指定变量为auto,
事实上,自从C语言有了auto,就没多少人用过!!
C++11给auto赋予新的内涵,用它来自动指定类型。
例如,您可以写
auto i = 1;
auto j = i * 2;
没有问题,i, j是什么类型,编译器会自动帮忙判断出来。
如果尝试写c++模板代码,立刻就会发现auto赋予程序员的无比快乐。
想下在C++ 98的年代的代码
struct A
{
typedef int Type;
int a;
int b;
};
struct B
{
typedef double Type;
double a;
double b;
};
template<T>
void some_func(T &t)
{
typedef typename T::type Type;
Type c = t.a + t.b;
....
}
复制代码
上面的代码里,我们这样做类型推导,为了得到不同的类A和B中的数据类型,
我们不得不用一些typedef, 一步步构想类型的来龙去脉,
最好,我们终于通过typedef得到了t.a和t.b的类型。
这是个简单的例子,当模板复杂时,事情通常变得烦复无比。
这分明不是在编程,分明是在当人肉编译器嘛。。
编程本应该是充满愉悦的事情,不应该被这些语言的纠纷所困扰。
在C++11里面,一个auto, 事情变得明朗起来。
struct A
{
int a;
int b;
};
struct B
{
double a;
double b;
};
template<T>
void some_func(T &t)
{
auto c = t.a + t.b;
....
}
复制代码
(转载请注明来自:nuvoton-m0.com)
作者:
myl593799546
时间:
2014-1-16 13:45
放在寄存器里,registor怎样呢?貌似也是这个功能吧,求对比
欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/)
Powered by Discuz! X3.2