本周主要是讲第一阶段c++没有讲完的一些特性,和一些c++11中的一些特性,这种讲的比较散,内容很庞大,主要分为以下几种
1、转换函数
operator double() const
{
return (double) (m_numerator / m_denminator)
}
主要是写在类中,告诉编译器可以转成另外一种类型的方式
2、explicit
这个字段主要是在类的构造的时候使用
non-explicit 可以把别的转化为自己 (容易产生二义性)
加上explicit 明确告诉编译器仅仅只能调用,不能作为转换构造使用(不会产生二义性)
3、pointer-like classes 智能指针
类里面包含了使用的指针,在重载操作符的时候,记得-> 这个符号很特别,可以带下去
4、function-like classes 仿函数
类里面重载了()的操作符,看起来像函数
5、namespace 命名空间
在多人开发时,为了防止类名和函数名冲突,可以用命名空间加以区分
6、template 模板
这里的模板分为
(1)类模板 template <typename T>
(2)函数模板 template <class T>
(3)成员模板 template<class T1, class T2>
(4)模板特化,模板偏特化
(5)模板参数
6、C++ 11 一些知识点
(1)可变数量的模版参数
(2)auto 关键字 (这里切记auto关键字使用一定要初始化!)
(3)for(auto m : vector) (一种容器遍历的新的方法)
for(auto& m : vector)
{m += 3}
这样会改变容器本身的值
本周还对reference进行再一次的讲解,这个我之前也是写到过,这里就不多讲
本周学习的内容比较多且杂。主要是一些语法学习,让我见识到了c++语言的丰富性。