原帖由 四香油饼 于 26-1-2012 12:53 发表
我怎么觉得到处都是问题阿,首先就是看不懂,怎么SomeFun后面都没用到过,定义这个纯虚函数有什么意义阿?
v = 100UL; 这句也不理解,我怎么看着像语法错误![]()
AnotherFun() 是个const函数,好像不能访问 v ...
原帖由 四香油饼 于 27-1-2012 13:58 发表
老乞丐,这一句在Thinking in C++里说是可以这样做的
virtual int SomeFun() = 0{ return 1;} //pure virtual function shouldn't contain implementation
原帖由 william_m76 于 27-1-2012 23:16 发表
class Derived : public Base
{
public:
virtual ~Derived() { cout<< "~Derived" << endl ; }
};
原帖由 ciasom 于 27-1-2012 23:55 发表
没有定义copy constructor。注意Y y2 = *y1;这个用法,它会调用copy constructor,而不是那个重载的赋值操作符( 在本例中根本用不到它)。.
X x1;
X x2(x1);
原帖由 coredump 于 27-1-2012 22:25 发表
这点不同意, copy constructor应该是下面这样的代码才会被调用:
这个例子中的 Y y2 = *y1;是个明确的赋值. 不过对于允许copy, 尤其是应该deep copy的情况下, 的确应该同时定义operator=和copy ctor. 从这方 ...
原帖由 四香油饼 于 27-1-2012 11:58 发表
老乞丐,这一句在Thinking in C++里说是可以这样做的
virtual int SomeFun() = 0{ return 1;} //pure virtual function shouldn't contain implementation
原帖由 finger|regnif 于 28-1-2012 02:03 发表
这个virtual int SomeFun() = 0{ return 1;}的确有点恶作剧. 其它的都很实在.
真正的恶作剧是这种: i++++i++i
X x2;
X x1 = x2;
原帖由 finger|regnif 于 28-1-2012 10:15 发表
和
是不同的. 前一个是赋值, 后一个是copy ctor. 这也算是copy ctor和operator=要同时存在的其中一个原因.
实际开发中见过几个用 X x1=x2;然后只定义operator=不定义copy ctor, 然后出bug的. 所以做为一 ...
原帖由 coredump 于 28-1-2012 00:42 发表
后一种很孔乙己, 我如果面试人, 最标准的答案不是给出正确结果, 而是拒绝回答, 然后给出拒绝的理由就行.
用人做compiler的活, 不是自虐狂就是神经病, 谁写这样的代码, 被review的时候, 肯定被骂得狗血淋头![]()
欢迎光临 FreeOZ论坛 (https://www.freeoz.org/ibbs/) | Powered by Discuz! X3.2 |