读书人

C++访问级别有关问题

发布时间: 2012-03-21 13:33:15 作者: rapoo

C++访问级别问题
如下为C++ primer(中文第四版)P506页的程序:有个问题还请各位大侠帮助:
程序如下:
class Sale_item{
public:
Sale_item():p(0),use(new size_t(1)){}
Sale_item(const Item_base&);
Sale_item(const Sale_item &i):p(i.p),use(i.use){++*use;}
~Sale_item(){decr_use();}
Sale_item& operator=(const Sale_item&);
size_t display(){return *use;}


private:
Item_base *p;
size_t *use;
void decr_use()
{
if(--*use == 0)
{
delete p;
delete use;
}
}
};

Sale_item& Sale_item::operator=(const Sale_item &rhs)
{
++*rhs.use;
decr_use();
p = rhs.p;
use = rhs.use;
return *this;
}

问题是在赋值操作符函数Sale_item& Sale_item::operator=(const Sale_item &rhs)的函数体内rhs.p合法吗?

形参传来的rhs中p和use都是类的私有成员,用对象调用私有成员rhs.p和rhs.use在这里合不合法?
同样在public中第三行代码Sale_item(const Sale_item &i):p(i.p),use(i.use){++*use;}这里也是不是页有同样的问题,
还望各位大牛解答,谢谢!




[解决办法]
如下为C++ primer(中文第四版)P381页里面的一个小标题 :形参表和函数体处于类作用域中
而私有成员在类的内部是可见的~

读书人网 >C++

热点推荐