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