—————————————————————————————————————————————————
//Knowledge Point:
*类的经典分类:
带pointer和不带pointer
*头文件的防卫式声明:
#ifndef _COMPLEX_
#define _COMPLEX_
//body
#endif
*模板函数: template<typename T>
*constructor(构造函数):同类名 无返回类型 初值列
*access level(访问级别):public private protected
*overloading(重载):同命不同参
*构造函数可以写在private下 singleton 读取一次
*constant member functions(常成员函数):数据不会改变
*参数传递:pass by value 数据整包传输 pass by reference (to const) 引用(底部为pointer 快) eg:const complex& (快且不可改)
返回值传递给已存在的对象可以return by reference
返回值传递给不存在的对象需要新的变量接受,不可以返回reference
*friend(友元)
*相同class的各个objects互为friends(友元)
*class规范:
数据存在private下
参数尽量用reference传递(const)
返回值尽量用reference
class的body内该用const用const
构造函数使用初始化列表
*operator overloading (操作符重载-1 成员函数) this
eg:complex::operator += (const complex&r){
return _doapl(this,r);
}
*return by reference 传输者无需知道接收者十一reference形式接受
*operator overloading (操作符重载-2,非成员函数)
inline complex&
operator +(const complex& x,const complex& y){}
*temp object(临时对象) typename()
不可return by reference (临时存在的)
返回local object
—————————————————————————————————————————————————
//Experience
看了群里同学们的讨论争议最多的是:
inline函数的用法
const的用法
指针和引用的异同点
传递参数是传value或reference等
大家讨论的知识点挺细,我看的云里雾里,理解的模模糊糊,也有一些简单的思考和体悟:
inline函数需要给编译器审批,不是打上inline的标签就inline了,编译器会判断。inline失败默认为static函数。
template模板类函数使用起来会更加方便
还有这个星期考试交的C++更加规范的写法让我印象更深,防卫式声明,构造函数的初值列,const该用就用等等,写作业的时候写运算符重载有点卡,思考了好久才运行成功,后来就在优化改进作业程序了,想做的更好一点。关于这周更深入的思考也就没有了,主要是看群里聊天记录有点晕乎乎的,继续加油!
网友评论