【C++】类的构造函数与析构函数笔记

本文详细介绍了C++中的构造函数和析构函数。构造函数用于对象初始化,通常在声明对象或使用new创建对象时自动调用。文章讨论了显式和隐式调用构造函数的方式,以及构造函数与new的结合使用。此外,还讲解了默认构造函数的用途。析构函数则在对象生命周期结束时自动调用,用于清理资源。最后,文章展示了如何改进Stock类以支持更灵活的初始化方式。
摘要由CSDN通过智能技术生成

目录

0. 整体概述为什么要引入构造函数 

1. 声明和定义构造函数

程序声明对象时,将自动调用构造函数

1.1 成员名和参数名

2. 使用构造函数

2.1 显式调用构造函数

2.2 隐式调用构造函数

2.3 构造函数与new一起使用的方法

3. 默认构造函数

4. 析构函数

什么时候调用析构函数呢?

5 改进Stock类

stock10.h

Stock10.cpp

 usestock2.cpp

const成员函数


 

0. 整体概述为什么要引入构造函数 

回顾【C++】抽象和类(2)--如何实现类成员函数?

截止到上一节,提供的代码不能直接像  int  或者  结构那样来初始化Stock对象。

常规的初始化语法不适用于类型Stock:

int year = 2001;
struct thing
{
    char * pn;
    int m;
}

thing amabob = { "hewlosd" , -30 };      //结构的初始化
Stock hot = {  "Mary tup", 2304, 4353};  //错误的初始化

不能像上面这样直接Stock初始化的原因是:数据部分是隐藏的,是私有的,程序不能直接访问数据成员。

程序只能通过成员函数来访问数据成员,因此需要设计合适的成员函数,才能成功地将对象初始化。

一般来说,最好是在创建对象时进行初始化:

stock gift;

gift.buy (10,  27.34);

类设计假设用户在调用其他成员函数时,都已经进行了自动初始化,C++将这种特殊的成员函数称为----类构造函数,将专门用于构造对象,将值赋给他们的数据成员。

类构造函数明察与类名相同:Stock 类 一个可能的构造函数是名为 Stock() 的成员函数。

1. 声明和定义构造函数

// stock00.h -- Stock class interface
// 版本 00 类的声明
#ifndef STOCK00_H_
#define STOCK00_H_
 
#include<string>
 
class Stock
{
public:
	void acquire(const std::string & co, long n, double pr);
	void buy(long num, double price);
	void sell(long num, double price);
	void update(double price);
	void show();
 
private:
	std::string company;
	long shares;  //股票数量
	double share_val;  // 每股的价格
	double total_val;   //股票的总价格
	void set_tot()
	{
		total_val = shares*share_val;
	}
 
};
 
#endif

需要为Stock 对象提供3个值,构造函数为3个参数,第四个值total_val是其他计算得来,不用提供这个值。

原型如下:

// 声明的原型可能是

Stock ( const string & co , long n = 0, double pr = 0.0 );

构造函数的一种可能的定义是:

// 构造函数定义

Stock::Stock(const string & co , long n , double , pr)

{

    company = co;
    if (n < 0)
    {
        std::cout << "股票数量不能设置为0; "
            << company << " shares set to 0. \n";
        shares = 0;
    }
    else
    {<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值