This topic has been archived. It cannot be replied.
-
相约北美 / 移民留学 / what's wrong with this code?class Base {
public:
Base(int initialValue = 0): x(initialValue) {}
private:
int x;
};
class Derived: public Base {
public:
Derived(int initialValue)
: Base(initialValue), y(initialValue) {}
Derived& operator=(const Derived& rhs);
private:
int y;
};
Derived& Derived::operator=(const Derived& rhs)
{
if (this == &rhs) return *this;
y = rhs.y;
return *this;
}
-guest:;
2001-8-7
{417}
(#158809@0)
-
还是shallow copy, x没copy
-000(老九);
2001-8-7
(#158840@0)
-
then, how to make a deep one?
-guest:;
2001-8-7
(#158848@0)
-
基类里也需要有赋值copy
-000(老九);
2001-8-7
(#158855@0)
-
how to copy, it's private.
-guest:;
2001-8-7
(#158862@0)
-
自己好好动动脑筋,derived里y一样是private的,你怎么能做到?
-000(老九);
2001-8-7
(#158880@0)
-
那是自己的member function 里面,当然可以访问,基类就不行了。
-guest:;
2001-8-7
(#158909@0)
-
基类里面你就不能再加个函数?
-000(老九);
2001-8-7
(#158949@0)
-
如果不想动基类,有没有解决方法?
-guest:;
2001-8-7
(#158969@0)
-
有,不过那样的解决方法就是不合乎C++规范的了,既然你是初学还是养成好的编程习惯吧,人家明明叫private,就让人家名副其实吧
-000(老九);
2001-8-7
(#158973@0)
-
既然有,何不说出来让我这初学者见识见识?藏着揶着不好吧?
-guest:;
2001-8-7
(#158975@0)
-
use friend function. but it's not very good to use.
-mrviceroy(熊咆龙吟*Daniel);
2001-8-7
(#158976@0)
-
谢谢指教。老九哥,您是不是也这个主意?如果是,还是C++方法么。怎么说不是?
-guest:;
2001-8-7
(#158980@0)
-
我不是这个主意,我是用指针
-000(老九);
2001-8-7
(#159047@0)
-
怎么玩法呢?
-guest:;
2001-8-7
(#159066@0)
-
我是搞C出身的,所以经常用些不规范的办法,编程经常会给维护的人留下一些陷阱,这是坏习惯,不是故意藏着掖着,实在是自己的C++水平有限,怕误导别人
-000(老九);
2001-8-7
(#159050@0)
-
我知道了,无非是算指针偏移量。
-guest:;
2001-8-7
(#159069@0)
-
我见过一个C++解决方法。static_cast<Base&>(*this) = rhs;
-guest:;
2001-8-7
{32}
(#159070@0)
-
哥们,你这不是Effective C++第16个item讨论的例子吗?
-oak(oak);
2001-8-8
(#159362@0)