C++ 构造函数
2013-11-05 10:11
113 查看
C++ 构造函数
C++ 中定义全局的对象,会引发该对象对应类及其父类的构造函数执行,因此可先于main() 函数执行。
如:
运行输出:
Quote constructor ...
Bulk_quote constructor ...
!!!Hello World!!!
Bulk_quote deconstructor ...
Quote deconstructor ...
C++ 中定义全局的对象,会引发该对象对应类及其父类的构造函数执行,因此可先于main() 函数执行。
如:
#include <iostream> using namespace std; // Base class defination class 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 defination class 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 ...
相关文章推荐
- c++写的os,对于全局对象,构造函数不会执行
- C++中的构造函数,拷贝构造函数,析构函数和赋值运算符重载
- C++中复制构造函数
- c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)
- 从初始化列表和构造函数谈C++的初始化机制
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- C++ 编译器默认构造函数奇怪问题
- c++ 用构造函数
- 深度探索C++对象模型 第二章构造函数语意学
- (C++)C++类继承中的构造函数和析构函数
- C++中最容易被人忘记的构造函数初始化列表
- C++:复制构造函数
- C++中构造函数调用构造函数
- C++成员变量、构造函数的初始化顺序
- C++学习笔记17,构造函数体内初始化数据成员与构造函数初始化器的区别(一)
- 20161230C++阶段班03_Object C++_03构造函数/命名空间/初始化列
- C++多层派生时的构造函数顺序问题
- C++设计的又一个缺陷——构造函数与析构函数名称不应该用类名
- C++ 类的构造函数和析构函数
- c++ 捕获构造函数成员初始化列表产生的异常