C++中的宏

由于很长时间没有摸C++这门儿语言了,把宏定义简单理解成了类似于变量声明和函数声明式地东西。然而,爬了一下博客才发现,宏仅仅只会在在预处理过程中展开,做简单的字符串替换,而没有任何的计算过程

两篇关于C++宏的相关讲解。

C++中的Lambda函数(匿名函数)

更新,今天学习了一下C++11标准中的lambda函数(匿名函数)。
Lambda函数的总体形式是:

1
[captures] (params) -> ret {Statements;}

captrues表示变量截取,

  • []不截取任何变量
  • [&]截取外部作用域中所有变量,并作为引用在函数体中使用
  • [=]截取外部作用域中所有变量,并拷贝一份在函数体中使用
  • [-, &foo]截取外部作用域中所有变量,并拷贝一份在函数体中使用,但对foo变量使用引用
  • [bar]截取bar变量并且拷贝一份在函数体中使用,同时不截取其他变量
  • [this]截取当前类中的this指针。如果已经使用了&或者=就默认添加此选项

params表示参数列表,
ret表示返回值类型,
statements就是函数体了。

参考自http://www.cnblogs.com/lidabo/p/3908663.html

C++中构造函数之间的调用

偶然看一份代码的时候,发现C++构造函数之间时可以互相调用的,这样可以减少重载构造函数时所需的代码量。这种构造函数之间的调用称为委托转接(delegation),Java以及C#都支持这种功能。例如:

1
2
3
4
5
6
7
8
9
class SomeType {
int number;
string name;
SomeType( int i, string& s ) : number(i), name(s){}
public:
SomeType( ) : SomeType( 0, "invalid" ){}
SomeType( int i ) : SomeType( i, "guest" ){}
SomeType( string& s ) : SomeType( 1, s ){ PostInit(); }
};

相关内容参考自http://www.cnblogs.com/ayanmw/archive/2012/08/20/2647808.html