GeekBand C++ WEEK3

一 . 关于类型转换

1. conversion function (转换函数) —— “转出去”

  1. 类型转换函数的一般形式如下:
    operator *type*() const;
  2. 类型转换函数的特点:
  • 必须是类的成员函数;
  • 形参列表必须为空;
  • 不能声明返回类型;
  • 类型转换函数通常应该是 const
  • 如果需要,可以写多个类型转换函数

3.参考案例:

operator double() const {
    return  (double) (m_numerator / m_denominator) ;
}

2. non-explicit-one-argument ctor —— “转回来”

  1. one-argument 不是 one-parameter. .
  2. 能通过一个实参调用的构造函数定义了一条从构造函数的参数类型向类类型隐式转换的规则,
  3. 参考案例:
public :
      Fraction (int num, int den = 1) : m_num(num), m_den(den) {}

Fraction de = f + 4; //调用 non-explicit ctor 将 4 转为 Fraction(4,1)

3. explicit-one-argument ctor

  1. explicit 作为关键字,主要用在构造函数前面,而且关键字 explicit 只对一个实参的构造函数有效,并且只能在类内声明构造函数时使用 explicit 关键字,在类外定义时不应重复,
public :  // 这样就不能自动将 4 变为 4/1  
      explicit Fraction (int num, int den = 1) : m_num(num), m_den(den) {}

4. 避免有二义性的类型转换

  1. 当类同时定义了类型转换运算符及重载运算符时特别容易产生二义性,
  2. 如果我们对同一个类既提供了转换目标时算术类型的类型转换,也提供了重载的运算符,则将会遇到重载运算符与内置运算符的二义性问题。

二 . 关于 C++ 2.0

1. 了解编译器对c++ 2.0 的支持度

  1. 对Dev C++ 最简单的方法:
#include <iostream>

int main()
{
  std::cout <<  __cplusplus ;
}

2. c++ 2.0 的几个新特性

**1. auto **

  1. 引进原因:编译器常常需要把表达式的值赋给变量,因此需要在声明变量的时候清楚知道表达式的类型,但有时很难做到,因此引进 auto 类型说明符,用它让编译器替我们区分析表达式所属类型。
  2. 因为没有赋值,无法推断出是什么类型,因此 auto 定义的变量必须有初始值。
  3. 使用 auto 也可以在一条语句中声明多个变量,但该语句中的所有变量的初始基本数据类型必须一致。

**2. ranged_base for **

  1. 基本理解:range for 这种语句遍历给定序列中的每个元素并对序列中的每个值执行某种操作;
  2. 语法形式:
 for ( declaration : expression){
           statement

declaration 声明一个变量,给变量将被用于访问序列中的基础元素;
expession 是一个对象, 用于表示一个序列,或者说是一个容器。

  • 如果要想改变序列中的值,必须把循环变量定义成引用类型。

3. variadic templates —— 数量不定的模版参数

  1. variadic template 就是一个接受可变数目参数的模板函数或模板类。可变数目的参数被称为 parameter packet ;
  2. 语法:
template <typename T , typename... Args>
void foo (const T& t, const Args& ... rest)
  1. 当我们需要知道包中有多少元素是,可以使用 sizeof... 运算符。

三 . 关于 templete -- 初识模版

1. function template --函数模版

  1. 一个函数模版就是一个公式,可用来生成针对特定类型的函数版本;
  2. 语法:
    template <typename T>
    模版定义以关键字 template 开头,后跟一个模版参数列表,用<>将以逗号分隔的一个或多个模版参数.
  3. 当我们调用一个函数模板时,编译器用函数实参来为我们推断函数实参--实参推导;
  4. 在模版参数列表中,class , typename 这两个关键字的含义相同,可以相互使用。

2. class template --类模版

  1. 类模版是用来生成类的蓝图的;
  2. 在设计 class 时,可以把类型抽出来允许使用者任意指定;
  3. 编译器不能为类模版推断模版参数类型,因此为了使用类模版,我们必须在模版名后的尖括号中提供额外信息 -- 就是在使用时指定;

3. member template --成员模版

  1. *一个类(无论是普通类还是类模版)可以包含本身是模版的成员函数,这种成员被称为成员模版。 *
  2. 其实就是说模版里面的一个member,而它自己本身又是一个template ;

**4. 关于模版特化的基础知识 **

  1. 模版特化:

    1. 当我们不希望使用模版版本时,可以定义类或函数模版的一个特例化版本;
    2. 一个特例化版本就是模版的一个独立的定义,在其中一个或多个模版参数被指定为特定的类型。
  2. 模版偏特化 (partial specialization) -- 部分特例化:

  3. 偏特化的模版参数列表是原始模版的参数列表的一个子集或者是一个特例化版本。

  4. 我们可以只特化成员函数而不是特例化整个模版。

模版总结: 学习基础知识为第五周做准备

四 . 本周课程疑问

  • 关于 pointer-like , function-like 不是很懂,以后慢慢学习。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容