20200109

淺唱寂寞╮ 提交于 2020-01-22 21:18:43

一.回顾/预习

1.流

在这里插入图片描述

2.运算符重载:友元单向的、不具备传递性、不能 被继承,所以,应尽力合理使用友元。

注意:友元的声明是不受 public/protected/private 关键字限制的。
运算符重载的实质就是函数重载或函数多态
在这里插入图片描述
运算符重载还具有以下规则:

为了防止用户对标准类型进行运算符重载, C++ 规定重载的运算符的操作对象 必须至少有一个是自定义类型或枚举类型

重载运算符之后,其优先级和结合性还是固定不变的。 重载不会改变运算符的用法,原来有几个操作数、操作数在左边还是在右边, 这些都不会改变。

重载运算符函数不能有默认参数,否则就改变了运算符操作数的个数。

重载逻辑运算符( && , || )后,不再具备短路求值特性。

不能臆造一个并不存在的运算符,如@、$等

用成员函数重载双目运算符时,左操作数无须用参数输入,而是通过隐含的 this 指针传入。

自增自减的前置与后置
在这里插入图片描述

明显前置形式效率更高

class Complex { public:

//...

//前置形式 
Complex & operator++() {

++_real;

++_image;

return *this; } 


//后置形式 
Complex operator++(int) //int作为标记,并不传递参数 
{
Complex tmp(*this);

++_real;

++_image;

return tmp; }

}

函数调用运算符

class Foo { public:

Foo(int count = 0): _count(count){}

void operator()(int x) { cout << " x = " << x << endl; }

int operator()(int x, int y) {

++_count;

return x + y; }

int _count;

};

void test() 
{ Foo foo; int a = 3, b = 4; foo(a); cout << foo(a, b) << endl; }

typedef 声明别名
此处为该类型函数别名
在这里插入图片描述
折腾的最终结果,vimplus

https://blog.csdn.net/qq_42104065/article/details/90450912

内置类型运算符无法重载?

sizeof是一个运算符
即使是sizeof(x),其中x为变量,在编译前也会被计算并替换,编译时已经变成结果

短路求值特性:if(0&&X),前者为0则x不会被执行
||与上相反

2.Fully-Convolutional Siamese Networks for Object Tracking

今日进度:python helloworld
中文漏洞需要改一改

python语法:

缩进标识代码块,缩进不对编译错误
数字只有int/bool/float/complex
字符串,三重代表多行字符串字符串前加r,raw无转义

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!