菜鸟学C++
http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
理论不懂就实践,实践不行就理论
AbstractClass.h
#ifndef ABSTRACTCLASS_H_
#define ABSTRACTCLASS_H_
class AbstractClass
{
public:
AbstractClass();
virtual ~AbstractClass();
public:
virtual void im() = 0;
};
#endif /* ABSTRACTCLASS_H_ */
AbstractClass.cc
#include "AbstractClass.h"
AbstractClass::AbstractClass()
{
}
AbstractClass::~AbstractClass()
{
}
void AbstractClass::im()
{}
Main.cc
#include <iostream>
#include "AbstractClass.h"
using namespace std;
class ConcreteClass : public AbstractClass
{
public:
ConcreteClass() {};
virtual ~ConcreteClass() {};
public:
virtual void im()
{
cout << "ConcreteClass::im" << endl;
};
};
void hello(AbstractClass *ac)
{
ac->im();
}
int main(int argc, char* argv[])
{
AbstractClass *pAC = new ConcreteClass();
hello(pAC);
delete pAC;
pAC = NULL;
return 0;
}
~/dev/workspace/labs/ccpp/cc_abstract_class$ g++ Main.cc /tmp/ccQrfLyb.o: In function `ConcreteClass::ConcreteClass()': Main.cc:(.text._ZN13ConcreteClassC2Ev[_ZN13ConcreteClassC5Ev]+0x14): undefined reference to `AbstractClass::AbstractClass()' /tmp/ccQrfLyb.o: In function `ConcreteClass::~ConcreteClass()': Main.cc:(.text._ZN13ConcreteClassD2Ev[_ZN13ConcreteClassD5Ev]+0x1f): undefined reference to `AbstractClass::~AbstractClass()' /tmp/ccQrfLyb.o:(.rodata._ZTI13ConcreteClass[typeinfo for ConcreteClass]+0x10): undefined reference to `typeinfo for AbstractClass' collect2: ld returned 1 exit status
然后这样编译就可以了
~/dev/workspace/labs/ccpp/cc_abstract_class$ g++ Main.cc AbstractClass.cc