博文
自己想的问题(2006-03-21 14:08:00)
摘要:假设有一张白纸,单面可以写n个字,并且两面都可以写字。
现在提出下面要求:
1、只能在空白的地方写字。
2、只能在向上的那一面上写字。
3、一面写完后,可以通过折叠使没有写字的那一面部分向上。
4、挨着桌子的那一面永远不能有字。
最后,请问这张纸最多可以写多少个字?......
一个关于继承和虚函数的问题(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......