C++ 构造函数

来源:互联网 发布:长沙专业seo服务i5seo 编辑:程序博客网 时间:2024/06/10 12:06

C++ 构造函数


C++ 中定义全局的对象,会引发该对象对应类及其父类的构造函数执行,因此可先于main() 函数执行。

如:

#include <iostream>using namespace std;// Base class definationclass Quote {public:Quote() = default;Quote(const std::string &book, double sales_price) :bookNo(book), price(sales_price) {cout << "Quote constructor ..." << endl;}std::string isbn() const {return bookNo;}virtual double net_price(std::size_t n) const {cout << "Quote" << endl;return n * price;}virtual ~Quote() {cout << "Quote deconstructor ..." << endl;}private:std::string bookNo;protected:double price;};// Derived class definationclass Bulk_quote: public Quote {public:Bulk_quote()= default;//Bulk_quote(const std::string &book, double sales_price, std::size_t qty, double dis);Bulk_quote(const std::string &book, double sales_price, std::size_t qty, double dis):min_qty(qty), discount(dis), Quote(book, sales_price) {cout << "Bulk_quote constructor ..." << endl;}//double net_price(std::size_t n) const {//cout << "hello" << endl;//}double net_price(std::size_t n) const {cout << "Bulk_quote" << endl;return n * price * discount;}~Bulk_quote() {cout << "Bulk_quote deconstructor ..." << endl;}private:std::size_t min_qty;double discount;};//Quote basic_item("0-123", 10);Bulk_quote item("0-123", 10, 3, 0.80);int main() {cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!return 0;}


运行输出:

Quote constructor ...
Bulk_quote constructor ...
!!!Hello World!!!
Bulk_quote deconstructor ...
Quote deconstructor ...