说明:
接下来的几篇文章其实是我的读书笔记,所读的书是钱能的C++程序设计。之所以选择这本书,首先,符合中国人的习惯;其次,涵盖了C++语言的面;最后,入门读物。
我计划接下来六篇文章把C++中的面向对象的类、对象生灭、继承、多态、抽象类、模板六块内容进行总结。其实我学习C++不久,这些文章内容都是从书上或其它资料上参考整理而来的,欢迎大家批评指正!
类:
1,只要是在类定义中实现的成员函数,就有默认的内联性质。
2,类定义体的编程参考意义和有条件的内联,使得类定义体设计时,应尽量将成员函数定义写到类定义的外部去。
3,默认内联:直接把方法定义写在类定义中;
显式内联:实现时添加inline声明,并与类定义写在同一文件。
4,能使用常成员函数就尽量使用常成员函数;
声明:ret-type functionName(params list) const;
定义:ret-type className::functionName(params list) const;
5,C++把操作符也看成了和函数一样的实体了。
6,操作符重载不是必要的,而是为了人性化的描述程序,让对程序有更好理解而采取的方法。
7,操作符重载的性质:
①拒绝创新;
不能创建新的操作符。
②个别重载限制;
操作符sizeof、typedef、作用域操作符(::)、点操作符(.)、? :操作符不允许重载。
③优先级和结合性不变;
④操作数个数不变;
⑤专门处理对象;
原生数据类型的操作符含义已有定义,不允许改变(如:不允许将两个浮点数进行求余%运算)。只能对自定义类型进行操作符重载,即至少得有一个操作数为自定义类型。
⑥忌意义相左。
操作符重载之后的行为要与其本身名字相匹配,以便于对其的使用。
8,经验之谈:参数为类类型,用引用型;参数为内部数据类型,不用引用型。
9,操作符重载之增量操作符
前增量与后增量的差别:
重载时的情况:
FC:
10,成员操作符
FC:
11,访问控制
1,书摘
关于访问控制的介绍:
类进行访问控制的合理性:
FC:
2,头一次听说的概念
类定义作用域
类作用域
也因此,成员函数内部调用成员函数,捆绑对象就见外了。捆绑对象是对使用者来说的,在类内部无需如此客套。--->延伸:
12,类概念的延伸
13,静态成员变量
14,静态成员函数
形如:
静态成员函数并非必须捆绑对象才能实现调用,可以通过类名与类作用域运算符实现调用。因此,除非静态成员函数的参数中包括类对象,否则不能直接使用私有成员变量。
15,友元
问题出现背景:
而使用普通函数通过类的成员函数来访问对象的数据成员这种方法会带来频繁的成员函数调用问题。引起性能问题,怎么解决?
使用友元(Friend):
使用友元之后,就可以直接访问对象的私有成员,从而免去调用成员函数,起到提高性能的效果。
友元使用方法如下:
在类中通过friend关键字声明要访问私有成员的函数,则在该函数的实现中就可以直接访问类的私有成员了。
友元的意义:
友元使用FC:
见钱老的书中①矩阵与向量乘法;②操作符“<<”重载。
//////////
2014/10/23