系列文章目录
例如:C++Primer Plus第十二章类和动态内存分配第3题
`提示:3. 新编写程序清单 10.7和程序清单10.8描述的 Stock 类,使之使用动态分配的内存,而不是 string类对象来存储股票名称。另外,使用重载的operator<<()定义代替show()成员函数。再使用程序清单10.9测试新的定义程序。
`提示:要学习一定要认真的学习
前言
提示:知识点概括:
new[],delete[],operator<<()
提示:以下是本篇文章正文内容,下面案例可供参考
一、情景再现
在第十章我们实现过的方法。这里用跟好的方式实现
1 头文件,原程序清单10.7
#pragma once
//stock20.h -- augmented version
#ifndef STOCK20_H_
#define STOCK20_H_
#include<string>
class Stock
{
private:
std::string company; //公司
long shares;//股票数量
double share_val;//股票单价
double total_val;//总市值
void set_tot()//内联函数,和inline同理,定义位于类申明中的函数自动成为内联函数
{
total_val = shares * share_val;
}
public:
//两个构造函数
Stock();//默认的构造函数
Stock(const std::string& co, long n = 0, double pr = 0.0);
~Stock();//析构函数
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()const;
const Stock& topval(const Stock& s)const;
};
#endif // !STOCK20_H_
2 实现方法.原程序清单10.8
//stock20.cpp--augmented version
//version 20
#include<iostream>
#include"stock20.h"
//默认无参的构造函数
Stock::Stock()
{
std::cout << "默认的构造函数执行\n";
company = "no name";
shares = 0;
share_val = 0.0;
total_val = 0.0;
}
Stock::Stock(const std::string& co, long n, double pr)
{
std::cout << "用构造函数创建:" << co << "公司\n";
company = co;
if (n < 0)
{
std