面向对象高级编程下 第一周笔记

仅个人学习记录,毫无参考性  望知悉!!!

面向对象高级编程下 第一周笔记_第1张图片

壹:Conversion function「转换函数2」2.00:10

语法:

面向对象高级编程下 第一周笔记_第2张图片
转出去,黄色那段

        转换函数的返回类型就是名称,编译器规定不写返回类型,编译器自动添加

        没有参数

        不会改变class「类」的值,通常加const

注:任何一个class,只要认为转换合理,都可以写转换函数

non explicit one argument「实参」 ctor3.0:10


面向对象高级编程下 第一周笔记_第3张图片

explicit「明确的」:仅用于构造函数前,避免编译器将之用于转换,产生二义性「模板存在极少量应用」

标准库栗子:3.13:48


面向对象高级编程下 第一周笔记_第4张图片
class

貳:class所产生的对象可能会像两种东西

①像指针「智能指针」                              ②像函数「仿函数」

pointer like classes「关于智能指针」

第一大类4.0:0



面向对象高级编程下 第一周笔记_第5张图片

语法:必然有一个普通的指针「px」

            必然有  ->   *  的操作符重载

            和一个可以接受普通指针的构造函数「将普通指针,包装成智能指针」

                                                                        注: -> 符号作用的对象完成后可以继续作用

第二大类「关于迭代器」4.12:17


面向对象高级编程下 第一周笔记_第6张图片

迭代器昨为特殊的智能指针,再于需要特殊的操作符重载    ++和 --


面向对象高级编程下 第一周笔记_第7张图片
栗子:链表

function like classes 「所谓仿函数」5.00:07

当某个东西可以接受()这个操作符,就可以将之称为函数或者像函数的

注:()小括号又名函数调用操作符


面向对象高级编程下 第一周笔记_第8张图片
标准库栗子

语法:class中有对()进行操作符重载的,用意就是变成function「仿函数」

标准库实例:5.07:44

叁:namespace  6.00:00

语法:关键字namespace  + 名字 ++{  需要分隔开的文件  }

注:用于将部分文件区分开,避免函数或类的名称冲突

面向对象高级编程下 第一周笔记_第9张图片
栗子

肆:template「模板」

注: 「泛化」 指在用户使用时,再指定类型

          仅仅在模板的<>中typename和class可以通用,由于早期没有typename关键字,临时借用了class

        模板在写的时候会编译一次,当使用「指定类型」时需要再次编译

①class template「类模板」7.0.12

②function template「函数模板」8.0.12

③member template「成员函数」9.0.12

①class template「类模板」7.0.12

语法:关键字tempalate + <关键字typename「或class」 + 名字「标记」>


面向对象高级编程下 第一周笔记_第10张图片

写一个类时,将类的某部分提取出来,将来由用户自己,使用时在指定类型的,就是类模板

②function template「函数模板」8.0.12

语法:关键字tempalate + <关键字typename「或class」 + 名字「标记」>

注:实参推导「函数模板不必指明其类型,编译器会对调用的参数进行推导」

面向对象高级编程下 第一周笔记_第11张图片

③member template「成员函数」9.0.12

???

面向对象高级编程下 第一周笔记_第12张图片

伍:specialization「模板特化」

注:特化对某些独特类型,进行「特殊」的设计10.00:40


面向对象高级编程下 第一周笔记_第13张图片

注:上面框表示泛化,下面框表示特化

        浅绿色表示临时对象

partial specialization「模板偏特化」

①个数的偏                            ②范围的偏

①个数的偏

面向对象高级编程下 第一周笔记_第14张图片

②范围的偏


面向对象高级编程下 第一周笔记_第15张图片

template template parameter「模板模板参数」???

注:模板的参数也是一个模板

面向对象高级编程下 第一周笔记_第16张图片

陆:c++标准库13.00:00

注:需要熟练掌握,试着将所有算法测试一遍

        以及推荐书籍

面向对象高级编程下 第一周笔记_第17张图片

柒:三个主题14.00:00

①variadic templates「数量不定的模板参数」14.00:19

①variadic templates「数量不定的模板参数」14.00:19

注:将参数分为两组,一个「正常写」 + 一包「typename  +  ...」

        c++11支持的


面向对象高级编程下 第一周笔记_第18张图片

你可能感兴趣的:(面向对象高级编程下 第一周笔记)