博文

自己想的问题(2006-03-21 14:08:00)

摘要:假设有一张白纸,单面可以写n个字,并且两面都可以写字。 现在提出下面要求: 1、只能在空白的地方写字。 2、只能在向上的那一面上写字。 3、一面写完后,可以通过折叠使没有写字的那一面部分向上。 4、挨着桌子的那一面永远不能有字。 最后,请问这张纸最多可以写多少个字?......

阅读全文(3116) | 评论:2

一个关于继承和虚函数的问题(2005-12-23 11:53:00)

摘要:首先,看一下这几行简单的代码: class  A { int  a; public: A(int aa):a(aa){}; void funa(){ a++;}; }; class B:public A { int b; public: B(int aa,int bb):A(aa),b(bb){}; virtual void funb()=0;//pure virtual function }; class C { int c; public: C(int cc):c(cc){}; virtual void func()=0; }; A a(1);//应该正确 C c(1);//应该错误 B  b(1,2);//对不对呢? 在C++语言中,拥有纯虚函数的类成为抽象类,该类不能实例化一个对象,必须在进一步继承中实现该函数,然后用派生类定义对象。那么,现在的问题是,基类为非抽象类,从他继承来的类是不是非抽象类呢?如果该继承类有纯虚函数,又属于抽象类还是非抽象类呢?还是先测试一下上面代码,看看结果: 第一次测试:(使用VC++6.0) int main(int argc, char* argv[])
{
 A a(1);
 C c(1);
 B b(1,2);
} 看看结果: F:\work2000\ddd\ddd.cpp(29) : error C2259: 'C' : cannot instantiate abstract class due to following members:
        F:\work2000\ddd\ddd.cpp(20) : see declaration of 'C'
F:\work2000\ddd\ddd.cpp(29) : warning C4259: 'void __thiscall C::func(void)' : pure virtual function was not defined
        F:\work2......

阅读全文(11315) | 评论:2