//const成员函数不能改变其操作的对象的数据成员
double Sales_item::avg_price() const
{
if(m_UnitsSold)
return m_Revenue/m_UnitsSold;
else
return 0;
}
//何时使用this指针
Screen& Screen::set(char c)
{
contents[cursor] = c;
return *this;
}
Screen& Screen::move(index r, index c)
{
cursor = r * width + c;
return *this;
}
myScreen.move(4,0).set(‘#’);
//explicit关键字只能用于类内部的构造函数声明
//抑制由构造函数定义的隐式转换
//单形参构造函数为explicit比较好
class Sales_item
{
public:
explicit Sales_item(const string &book = "");
}
item.same_isbn(null_book); // error
item.same_isbn(Sales_item(null_book)); // ok
//友元
class Screen
{
friend class Window_Mgr;
friend Window_Mgr& Window_Mgr::Relocate();
friend void f();
}
Window_Mgr& Window_Mgr::Relocate(Screen::index r, Screen::index c, Screen& s)
{
s.height += r; //可以访问Screen的所有成员,包括私有成员
s.width += c;
return *this;
}
类的static成员
优点:(1)避免名字冲突 (2) 可以封装, static成员可以是私有成员