a.访问说明符:public和private。public:在整个程序内可以被访问,定义类的接口;private:可以被类的成员函数访问,不能被使用该类的代码访问,封装(隐藏)了类实现的细节。
b.关键字:class和struct。struct默认是public的;class默认是private的。
c.友元:允许其他类或者函数访问它的非公有成员。加关键字friend声明函数,只能在类内部声明,友元的声明仅仅指定了访问的权限,并不是通常意义的声明,还应该专门对函数进行一次声明。友元没有传递性,每个类负责控制自己的友元类或友元函数。
d.在类中定义某种类型的别名:typedef std::string::size_type pos;可以是public,也可以是private的。作用:可以通过pos隐藏(真正的数据类型)实现的细节。
e.内联函数:规模较小的函数。cout<<func(a,b)<<endl; cout<<(a.size()<b.size()?a:b)<<endl;避免函数调用的开销。关键字:inline。定义在类内部的成员函数自动是inline的。
f.可变数据成员:修改类的数据成员,即使是该对象是const的。关键字mutable
g.类的特性:类型成员、类的成员的类内初始值、可变数据成员、内联成员函数、从成员函数返回*this、关于如何定义并使用类类型及友元类。 如果我们定义的返回类型不是引用(Screen而非Screen&(左值)),则返回值将是*this的副本,调用时只能改变副本。
左值:表示存储在计算机内存的对象,可寻址,相当于地址值
右值:代表的为真实值,可读,即数据值
h.一个const成员函数以引用形式返回*this,它的返回类型将是常量引用。非常量版本的函数对于常量对象是不可用的,所以我们只能在一个常量对象上调用const成员函数;非常量对象可以调用常量版本多非常量版本函数。
i.将另一个类的成员函数作为友元,要注意程序的组织结构和声明和定义的依赖关系。
j.函数外定义的函数的返回类型,如果该类型是定义在类中的,则必须指定该类。
k.名字的查找与类的作用域:1.先处理类中的全部声明,再处理成员函数的定义;2.首先,在函数内查找该名字的声明,然后在整个类中查找,最后在类外该函数之前的作用域内查找。
在不同的作用域使用同一个名字的时候,要注意使用的是哪个作用域中的对象。