博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于析构函数和构造函数何时调用的小例子
阅读量:4840 次
发布时间:2019-06-11

本文共 2688 字,大约阅读时间需要 8 分钟。

详情见C++ PrimerPlus第十章

省略其他函数,将构造函数和析构函数写出来

Stock::Stock() //default constructor {
std::cout<<"Default constructor called\n"; company="no name"; shares=0; share_val=0; total_val=0; } Stock::Stock(const std::string&co,long n,double pr) {
std::cout<<"Constructor using"<
<<"called\n"; company=co; if(n<0) {
std::cout<<"Number of shares can't be negative;"<
<<"shares set to 0.\n"; } else {
shares=n; } share_val=pr; set_tot(); } Stock::~Stock() {
std::cout<<"Bye,"<
<<"!\n"; } 正常情况下析构函数和构造函数一般没有cout语句,这里为了显示出他何时被调用,加上了输出语句。
int main() {
{
using std::cout; cout<<"Using constructors to creat new objects\n"; Stock stock1("NankSmart",12,20); stock1.show(); Stock stock2("Boffo Objects",2,2);//调用时 // 直接调用了构造函数 即下列函数 /*Stock::Stock(const std::string&co,long n,double pr) {
std::cout<<"Constructor using"<
<<"called\n"; company=co; if(n<0) {
std::cout<<"Number of shares can't be negative;"<
<<"shares set to 0.\n"; } else {
shares=n; } share_val=pr; set_tot(); } 因此编译后有如下语句: Constructor usingBoffo Objectscalled Company: Boffo Objects shares: 2 Share price: 2.000 total worth :4.00 * */      stock2.show(); cout<<"Assigning stock1 to stock2 :\n"; stock2=stock1; cout<<"Listening stock1 and stock2: \n"; stock1.show(); stock2.show(); cout<<"Using a constructor to reset an object\n"; stock1=Stock("Nifty Foods",10,50); //这里调用了析构函数,有如下语句 "Bye,Nifty Foods!" cout<<"Revised stock1:\n"; stock1.show(); cout<<"Done\n"; //最后结束的时候,全部对象结束调用,所以有调用了两个对象的析构函数 //有如下语句 //Bye,NankSmart! //Bye,Nifty Foods! } } 最后是编译后的结果(有些遍以前可能不同)

Using constructors to creat new objects

Constructor usingNankSmartcalled
Company: NankSmart shares: 12
Share price: 20.000 total worth :240.00
Constructor usingBoffo Objectscalled
Company: Boffo Objects shares: 2
Share price: 2.000 total worth :4.00
Assigning stock1 to stock2 :
Listening stock1 and stock2:
Company: NankSmart shares: 12
Share price: 20.000 total worth :240.00
Company: NankSmart shares: 12
Share price: 20.000 total worth :240.00
Using a constructor to reset an object
Constructor usingNifty Foodscalled
Bye,Nifty Foods!
Revised stock1:
Company: Nifty Foods shares: 10
Share price: 50.000 total worth :500.00
Done
Bye,NankSmart!
Bye,Nifty Foods!

Process finished with exit code 0

转载于:https://www.cnblogs.com/LvBaiYang/p/5964871.html

你可能感兴趣的文章
HDU 1233 还是畅通工程
查看>>
HTTP状态码
查看>>
ArcEngine实现坐标转换和投影(转载)
查看>>
solr集群SolrCloud(solr+zookeeper)windows搭建
查看>>
LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)
查看>>
51nod 1351 吃点心(贪心)
查看>>
Vim配置(python版)
查看>>
内核开发基础3——Linux内核配置与编译
查看>>
计算机组成原理复习
查看>>
BUPT复试专题—中序遍历序列(2013)
查看>>
【常见Web应用安全问题】---7、CRLF injection
查看>>
php7.2.1 安装
查看>>
用winrar解压时提示无法设置安全数据 拒绝访问的解决方法
查看>>
诡异的数学,数字问题 - leetcode
查看>>
交换输出
查看>>
设计模式-策略模式&状态模式&访问者模式
查看>>
python学习第三十三节(IO模型)
查看>>
linux pci 驱动小结
查看>>
BZOJ2744: [HEOI2012]朋友圈
查看>>
设计模式之抽象工厂模式
查看>>