
#include
这里有一个程序,编译没有问题,但执行会出错 class a { public: virtual void foo(void) = 0; }; class b:public a { public: void foo(void){ cout<<"hello"; } void foo2(void){ cout<<"hello"; } }; int main(void) { b* p; p->foo(); }
1.有基类CBase和其派生类CDerive; 2.两个类的析构函数都不是虚函数; 3.我定义一个基类指针指向派生类,CBase *pB = new CDerive; delete pB; 4.我发现先构造CBase,然后构造CDerive,然后析构CBase; 我想知道为什么没有调用派生类的析构函数?析构函数写成虚函数到底是为什么?
例如 class bb { virtual void step() = 0; }; 上面这种是放在一个头文件里边的 这个后面的 "=0"是什么意思啊,不知道是虚函数特有还是成员函数也有,还是说是函数都有? [ 本帖最后由 SCerZZ 于 2009-9-11 15:30 编辑 ]
c++编程思想里边有提到,内联的纯虚函数定义是非法的 我做了个测试 [code] class Shape{ public: virtual void draw() = 0{ std::cout <<"Shape::draw()\n"; } }; [/code] 这种情况编译会出错,这个没有疑问 [code] class Shape{ public: virtual void draw() = 0; }; inline void Shape::draw(){ std::cout <<"Shape::draw()\n"; } [/code] 而这种情况编译就没有错误了,不解 我觉得上面两个都是把dra...
我定义了一个抽象类,然后从它派生了一个类如下
class A{
public:
A();
~A();
virtual func() = 0;
};
class B:public A{
public:
B();
~B();
func() {cout<<"aaa"<
源代码如下:
#include
gcc --version gcc (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4) g++ --version g++ (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4) 编写程序时报这个警告,我的程序是从VC下移植过来的 我感觉这个警告太敏感了,怎么让gcc无视它,不再报? 我是linux新进,:谢谢!