为什么会输出NAN
首先为上一帖的含糊不清道歉,主程序
程序代码:
#include<iostream> #include<string> #include<vector> #include"Item_base.hpp" #include"Bulk_item.hpp" using namespace std; int main(){ vector<Item_base>itemvec; string isbn; double price,qty,discount; cout<<"Enter some Bulk_item objects"<<endl; while(cin>>isbn>>price>>qty>>discount){ itemvec.push_back(Bulk_item(isbn,price,qty,discount)); } double sum=0.0; for(vector<Item_base>::iterator iter=itemvec.begin(); iter!=itemvec.end();++iter) sum+=iter->net_price(100); cout<<sum<<endl; return 0; }
基类
程序代码:
class Item_base{ public: Item_base(const std::string &book="",double sales_price=0.0):isbn(book),price(sales_price){ } std::string book()const{ return isbn; } virtual double net_price(std::size_t n)const { return n*price; } virtual ~Item_base(){ } private: std::string isbn; protected: double price; };
继承类
程序代码:
class Bulk_item:public Item_base{ public : Bulk_item(const std::string &book="",double sales_price=0.0,size_t qty,double dis): Item_base(book,price),min_qty(qty),discount(dis){ } double net_price(std::size_t cnt)const{ if(cnt>=min_qty) return cnt*(1-discount)*price; else return cnt*price; } private: std::size_t min_qty; double discount; };
当我一次输入 book 3 20 0.9
时,输出应该为 300 可是却输出NAN。 no a number ??找不到错误在哪。
虽然这个原理知识都懂了,但是得不到想要的结果总是难受的,请前辈们指教。