Redian新闻
>
问个关于c++ access 的问题
avatar
问个关于c++ access 的问题# Programming - 葵花宝典
t*m
1
class Wilma { };
class Fred {
public:
Fred() : p_(new Wilma()) { }
Fred(const Fred& f) : p_(new Wilma(*f.p_)) { }
~Fred() { delete p_; }
Fred& operator= (const Fred& f)
{
// Bad code: Doesn't handle self-assignment!
delete p_; // Line #1
p_ = new Wilma(*f.p_); // Line #2
return *this;
}
private:
Wilma* p_;
};
其中的一句
Fred(const Fred& f) : p_(new Wilma(*f.p_)) { }
为什么可以用*f.p_? p_ 不是f的privat
avatar
k*k
2
p_ 是 Fred 的 private member,在 Fred 的 scope 里面都可以用

【在 t**m 的大作中提到】
: class Wilma { };
: class Fred {
: public:
: Fred() : p_(new Wilma()) { }
: Fred(const Fred& f) : p_(new Wilma(*f.p_)) { }
: ~Fred() { delete p_; }
: Fred& operator= (const Fred& f)
: {
: // Bad code: Doesn't handle self-assignment!
: delete p_; // Line #1

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。