Re: [cpp] 问一个关于拷贝构造函数的问题
Oscar.Ken
oscar.ken at gmail.com
Thu Mar 16 20:40:19 CST 2006
顺便出个小题目,下面代码中哪几行不能通过编译?(仅供娱乐)
class Base
{
protected:
int _iProtected;
private:
int _iPrivate;
public:
void FooBase()
{
_iPrivate = 0;
}
};
//--------------------------------------------------------------------------------------
class ProtectedB : protected Base
{
public:
void Foo()
{
_iPrivate = 0;
_iProtected = 0;
}
};
//--------------------------------------------------------------------------------------
class PrivateB : private Base
{
public:
void Foo()
{
_iPrivate = 0;
_iProtected = 0;
}
};
//--------------------------------------------------------------------------------------
int main(int argc, char* argv[])
{
PrivateB privateB;
privateB.Foo();
ProtectedB protectedB;
protectedB.Foo();
privateB.FooBase();
protectedB.FooBase();
return 0;
}
在06-3-16,Oscar. Ken <oscar.ken at gmail.com> 写道:
>
> 自家人不识自家人,合理吗?
>
> 在06-3-16,Fei Xu <flyingxu at gmail.com> 写道:
> >
> > 也许可以这样理解
> > protected, private都是对于class,而不是object
> >
> > On 3/16/06, Qiao Jie < analystqiao at hotmail.com> wrote:
> > > 这个是对标准的误解。
> > > Test类的成员函数当然具有对Test类成员的完全访问权限,这个跟类型相关,而跟你是
> > > 用指针访问还是引用访问是用this指针还是其他名字的指针没有任何关系。你在Test函
> > > 数里用m_pc的时候,其实是隐含使用了this->m_pc。
> > >
> > >
> > > >From: Xiao Guo Li <lxgbrian at yahoo.com.cn>
> > > >Reply-To: C++ Discuss Group <cpp at codingnow.com>
> > > >To: C++ Discuss Group < cpp at codingnow.com>
> > > >Subject: [cpp] 问一个关于拷贝构造函数的问题
> > > >Date: Thu, 16 Mar 2006 16:36:29 +0800 (CST)
> > > >
> > > >大家看看,下面的代码有什么问题没有,
> > > >class Test{
> > > >public:
> > > > Test();
> > > > Test(const Test& t);
> > > >private:
> > > > char * m_pc;
> > > >};
> > > >
> > > >Test::Test(const Test& t): m_pc(t.m_pc)
> > > >{
> > > >}
> > > >
> > > >...
> > > >问题是,这样写没有问题,但按照理解,
> > > >m_pc是类Test的私有变量,t.m_pc这种写法是不允许的。
> > > >
> > > >哪位DX给解释一下?
> > > >
> > >
> > >
> > > _______________________________________________
> > > Cpp mailing list
> > > Cpp at codingnow.com
> > > http://codingnow.com/mailman/listinfo/cpp
> > >
> >
> >
> > --
> > Fei Xu
> > Shanghai, China
> >
> > _______________________________________________
> > Cpp mailing list
> > Cpp at codingnow.com
> > http://codingnow.com/mailman/listinfo/cpp
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20060316/455ce0d5/attachment-0001.html
More information about the Cpp
mailing list