学习笔记

Posted 才极

tags:

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

面向对象编程风格(下)

Iterator Class

运算符

类内定义一些!=,*,++等运算符。运算符函数不用指定函数名,需要在运算符前加上关键字operator。

运算符重载的规则:

  • .,.*,::,?:这四类无法重载,其余均可以。

  • 运算符的操作数的个数无法改变。二元运算符必须两个操作数,一元运算符需要一个操作数。

  • 运算符的优先级无法改变。

  • 运算符函数的参数列表中,必须至少有一个参数为类类型。

嵌套类型

使用typedef可以为某个类型设定不同的名称。
 必须使用类作用于运算符来指引编译器。将指针嵌套放在每个类内,就可以提供有着相同名称的多个定义。

friend

任何class均可以将其他函数或其他类指定为它的朋友(friend)。所谓的friend就具备了和类成员函数相同的访问权限。在类的内部必须是将非成员函数设为朋友。

class B 
	friend int operator*(const A &a);
;
class A
	friend int operator*(const A &a);
;

//类的外部定义
inline int operator*(const A &a)
	a.函数(); // 可以直接访问类的私有成员


可以先令A类与C类建立友元关系,让A类的所有成员函数称为C类的友元。

class C 
	friend class A;
;

实现一个拷贝赋值运算符

Matrix& Matrix::operator=(const Matrix &rhs)
	if(this != &rhs)
		_row = rhs._row;
		_col = rhs._col;
		int elem_cnt = _row * _col;
		delete [] _pmat;
		_pmat = new double[elem_cnt];
		for(int ix = 0; ix < elem_cnt; ix++)
			_pmat[ix] = rhs._pmat[ix];
	
	return *this;


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

系列文章--Node.js学习笔记系列

Windows编程课程学习笔记

Windows编程课程学习笔记

2022年Spark基础学习笔记

SpringBoot学习笔记——Thymeleaf

学习笔记-第五周-学习笔记