primer Day3

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了primer Day3相关的知识,希望对你有一定的参考价值。

标准库的function类型 function<T> f;

 result_type  该function类型的可调用对象的返回类型  

function<int(int ,int)> f1 

函数名重载的话,不能直接放入function类型的对象中 可以通过存储函数指针的方式来解决这个问题

 

类型转换符:是类的一种特殊成员函数,它负责将一个类类型转化的值转化为其它类型

一般形式如下

  operator type() const ;

类型转换函数必须是类的成员函数; 他不能声明返回类型,形参列表必须为空

class SmallInt{

SmallInt(int i = 0):var(i){

if(i < 0 ) throw std::out_of_range("##########");

}

operator int() const{return val;};

private:

std::size_t val;

}

技术分享

 

 c11 引入显示类型转换运算符

clase SmallInt{

public:

explict operator int() const {return val;}

}

SmallInt si = 3 正确 构造函数不是显示的

si+3 错误 因为这里要发生隐式类型转换 但类的运算符是显示的

static_cast<int>(si) +3 正确

有个例外:表达式被用作条件 显示类型会被隐式执行   if while for等条件部分

 class smallint{

  public:

    samllint operator+(const smallint&,const smallint&);

  public:

    smallint(int = 0) //提供了源为int的类型转换

    operator int() const{return val;};//提供了目标为int的类型转换

  private:

    size_t:: val; 

}

    smallint s1,s2;

      smallint s3 = s1 + s2; //正确 会调用重载运算符的版本

    int a = s3 +0;          //错误  s3可以转化为int类型 0也可以转化为samllint类型 存在二义性

  

 

以上是关于primer Day3的主要内容,如果未能解决你的问题,请参考以下文章

C++primer知识点(终结C++primer)

windows下primer3-py安装

C++primer知识点(终结C++primer)

c++primer笔记--chapter one

单击内部时如何关闭 Primer.css 下拉菜单?

C++Primer第5版学习笔记