C++ 构造函数与析构函数、this指针详解

#include "pch.h"
#include <iostream>
using namespace std;
/*
类的构造函数与析构函数详解

*/
//创建stock类
class stock {
private :
	string company;
	long shares;
	double share_val;
	double total_val;
	void set_tot() { total_val = shares * share_val; }
public:
	void acquire(const string &co, long n, double pr);
	void buy(long num, double price);
	void sell(long num, double price);
	void update(double peice);
	stock show(stock );

	//构造函数声明
	stock(const string &co = "Error", long n = 0, double pri = 0);
	//stock();
	~stock() {

	}
};
//构造函数定义
stock::stock(const string &co, long n, double pri) {
	company = co;
	if (n < 0) {
		std::cerr << "none";
		shares = 0;
	}
	else shares = n;
	share_val = pri;
	set_tot();
}
stock stock ::show(stock obj)
{
	if (obj.shares >this->shares )
	return *this;//this 指针指向当前对象;
}
void main() {
	//使用构造函数:
	stock xiaoming = stock("xiaoli", 1, 1);
	//隐式调用构造函数
	stock xiaoming1("xiaoli", 2, 2);
	//使用new运算符动态调用构造函数
	stock *newsto = new stock("newstock", 3, 3);//动态创建一个对象,并将对象地址付给对象指针
	//默认构造函数,没有提供构造函数的时候,创建对象时调用默认构造函数
	//提供了构造函数之后,必须显式声明默认构造函数;否则下面的声明出错;
	stock moren;

	//注意区分:
	stock first("zt", 1, 1);//调用构造函数创建对象
	stock first();//返回stock对象的函数
	stock second;//调用默认构造函数创建的对象

	//C++ 列表初始化:方括号中的参数与类的某个构造函数的参数列表匹配即可进行列表初始化;
	stock list = { "list",1,1 };
}

复制构造函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值