C++学习第五周

一.转换函数 operator double()const{}

注意点:

first 转换函数一般都要加上const

second 转换函数的返回类型一般都是所要转换的类型

且不无需定义返回类型

three 转换函数应该注意二义性  与操作符重载冲突

问题:

1.为什么分子没有默认参数??

数学的习惯 1/5

2.转换回来的问题...

no explicit one argument ctor

二.单实参函数

单实参具有自动转换功能(把一个实参类型自动转换为此类)

这个功能可能会使操作出现二义性 可以用explicit阻止这个行为

问题

代理设计模式?

pointer-like

智能指针的实现

他是一个带指针的类 所以要遵循指针类的规则

一般来说他 要重载* 和->两个指针

->符号 会一直作用下去

迭代器

++ -- * -> == !=

function like

operator()重载 函数对象

pair class

三.namespace

namespace jj01

{

}

namespace jj02

{

}

测试的时候

int main

{

jj01::

jj02::

}

函数模板  实参推导

类模板

Member Template  在模板里的类成员 又是模板

up-cast

模板特化template<>class  hasn{}

模板偏特化templateclass vector{}

templateclass vector{}

范围上的偏templateclass vector{

}templateclass vector{}

模板模板参数templateclass Container

四.指针动态绑定的三个条件  第一通过指针 第二这个指针向上转型第三动用虚函数静态绑定 callC++多态的实现vectorv;

谁调用函数 谁就是this

(*(this->vptr)[n])(this)

虚函数的两种用法

1.Template model

2.多态

谈谈const

成员函数后面  == 不打算改变class data数据

共享 :当其中一个成员要改变

单独拷贝出一份更改

全局new delete的重载

全局new delete重载不可以在任意的namespace中

在class里面

void* operator new(size_t)

void operator(void* v,size_t)

强制使用全局 ::new(size_t)

new[] 拥有一个size为4 的计数器int 内存传入

new(size_t ,size_t extern) 重载

可以写出对应的delete(void* ,size_t)仅当new时构造函数异常时 才调用重载的delete

你可能感兴趣的:(C++学习第五周)