2 li roger li_roger 于 2016.09.22 19:15 提问

c++ 抽象类问题--构造函数能不能写在头文件中类外。

c++中 在头文件中写一个抽象类,对于其构造函数,我也定义在头文件中,但是定义的位置是在类外。 再写一个抽象类的子类,并用子类实例化对象。 出现了多重定义的问题,各位大大,能指教一下吗?

3个回答

seeze
seeze   2016.09.22 20:06

抽象类不应该写构造函数,因为它不能被实例化

u011418829
u011418829   2016.09.24 16:49

小胸弟,可以的。但在类外要表明是那个类的构造函数,比如对于类Student,构造函数Student(int, int);
在类外应该是这种形式的:Student::Student(int,int){}
示例代码:

#pragma once
#include
using std::string;
class Quote {
public:
Quote() = default;
Quote(const string& s, double p);
string isbn()const { return bookNo; }
virtual double netPrice(size_t n) const { return n*price; }
virtual ~Quote() = default;
private:
string bookNo;
protected:
double price=0.0;
};
Quote::Quote(const string& s, double p) :bookNo(s), price(p) {}
class BulkQuote :public Quote {
public:
BulkQuote() = default;
BulkQuote(const string&s, double p, size_t q, double d) :
Quote(s, p), min_qty(q), discount(d) {}
double netPrice(size_t) const override;
private:
size_t min_qty=0;
double discount = 0.0;
};
double BulkQuote::netPrice(size_t cnt) const {
if (cnt >= min_qty)
return cnt*(1 - discount)*price;
else return cnt*price;
}


halfpencil
halfpencil   2016.09.25 12:05

最好是贴一下你的代码,这样是比较有针对性。

Csdn user default icon
上传中...
上传图片
插入图片