C++(一)
2016-01-20 14:51
253 查看
auto
vector<int> number(5,10);
for(auto& e:number)
{
e=e+2;
cout
<<(int)e
<<endl;
}
纯虚函数在基类中只有声明而没有定义,必须在子类中加以实现,相当于java中的接口。虚函数可以在基类中定义,在子类中可以重写也可以不重写虚函数。
virtual void func()=0;
在函数前面添加virtual虽然牺牲一些性能,但增加了面向对象的多态性。
lambda表达式、匿名函数
[capture] (parameters)->returntype{body},返回值可以省略。[capture]称为闭包,lambda函数可以引用在它之外声明的变量,这些变量的集合称为闭包,闭包变量分为按值或按引用使用。
[ ] //未定义变量,在lambda中使用任何变量都是错误的
[x,&y] //x按值使用,y按引用使用
[&] //用到的任何外部变量都隐式按引用捕获
[=] //用到的任何外部变量都隐式按值捕获
[&, x] //x显式地按值捕获. 其它变量按引用捕获
[=, &z] //z按引用捕获. 其它变量按值捕获
lambda函数是函数对象类型,使用auto类型存储lambda函数。
auto f1=lambda_function();
auto f3=new auto(lambda_function());
decltype(f1) f2=lambda_function();
如果要把lambda函数作为一个参数来传递,形参的类型必须是模板类型或者std::function对象。
一个没有指定任何捕获的lambda函数,可以显式地转换成一个具有相同声明形式的函数指针。
auto lambda_func=[][int x] {…};
void (*func_ptr)(int)=lambda_func;
func_ptr(5);
Function
std::function的实例对任何可调用的目标实体进行存储、复制和调用操作,这些目标实体包括普通函数、lambda表达式、函数指针、类方法等。std::function
引用
引用就是一个变量的别名,对引用的操作和对变量直接操作完全一样。类型标识符 &引用名=目标变量名;
声明引用时必须对它进行初始化,引用本身不占存储单元,对引用求地址和对目标变量求地址一样。
传递引用给函数与传递指针的效果一样,一般引用参数定义为常引用。
const 类型标识符 &引用名=目标变量名;
引用可以达到多态的效果,一个基类的引用可以指向它的派生类型实例,该引用只能用来访问派生类实例中从基类继承下来的成员。
C++中,临时对象都是const类型的。引用作为返回值:
函数定义格式: 类型标识符 &函数名(形参列表及类型说明){函数体}
注意不能返回局部变量的引用;不能返回函数内部new分配的内存的引用。
相关文章推荐
- C++ Primer Plus(第六版)读书笔记(二)
- 求次方和
- C++中placement new操作符(经典)
- 从一简单程序看C语言内存分配
- C++的精髓——虚函数
- 用C++创建属于自己的类库?
- 脑上用VS2010编写的VC++程序(使用MFC库
- AndroidStudio 编译C/C++文件生成SO文件
- C#调用C++dll文件 运行提示找不到函数的入口点
- C++封装、继承、多态
- C++函数重定义、重载、重写
- VS2015 C#调试C++ dll时提示:“当前不会命中断点,因为还没有为该文档加载任何符号”解决方法From Eric Qu
- c++中struct使用注意事项
- <设计模式>系列汇总 By python and C++
- C语言实现龙贝格求积
- OJ上 G++ 与 C++ 的区别
- c++调用fortran程序中遇到的问题
- C语言再学习之数据类型
- C++中内存分配详解
- 1010. Radix (25)