C++学习笔记1 类与析构函数

来源:互联网 发布:淘宝保健品规则 编辑:程序博客网 时间:2024/05/16 10:06

问题一:

为什么要用类?

我们知道C语言是面向过程的程序语言,而C++继承了C的风格,同时也对C进行了进一步地完善,C++提出了类,实现了程序的面向对象的功能(OOP)

面向对象编程具有以下几个特点:

1 封装性

2 抽象

3 数据隐藏

4 继承性

5 代码的可重用性

6 多态性

简单直白说为什么要用类呢?

在C语言中,我们编写函数,调用函数来实现某一功能,每次调用结束后,开始下一次计算时,都需要重新来进行初始化,才可以(从头开始)

而类解决了这样一个问题,不用每次都给函数重新赋值,实现了代码的可重用性和封装性

采用过程性编码,首先要考虑 的是要遵循的步骤,然后再考虑如何表示这些数据

面向对象编程:不仅考虑如何表示数据,还要考虑如何使用数据

面向对象编程:用一个对象来统计数据信息,一个对象来统计函数信息(如何使用数据)

高效,方便

问题2

类包括什么?

类包括数据信息和如何使用数据信息两部分(直白理解)

一般说来

类规范有两个部分

1 类声明:定义数据成员

2 类方法定义:如何使用数据

如我们为股票交易设计类函数

如下代码:

#include "iostream"
#include "cstring"
//定义股票交易的类
class stock
{
private:
//公司名称
char company[30];
//股份数目
int shares;
//单个股票价值
double share_val;
//股票总价值
double total_val;
//计算股票总价值的函数
void set_tot()
{
total_val=shares *share_val;
}
public:
//获得用户信息
void acquire (const char *co,int n,double pr);
//用户的买操作
void buy(int num,double price);
//用户的卖操作
void sell(int num,double price);
//市场波动 股票价值的更新
void update(double price);
//显示用户个人拥有股票的信息
void show();
//计算用户的盈亏状态
//void profit(double share_val1,double share_val2);
void profit(int num,double price);
};
void stock::acquire(const char *co,int n,double pr)
{
std::strncpy(company,co,29);


company[29]='\0';
if(n<0)
{


std::cerr<<"股东数不能为负数\n"<<company<<"shares set to0.\n";
shares=0;
}
else
{
shares=n;
share_val=pr;
set_tot();
}
}
//买股票函数
void stock::buy(int num,double price)
{
if(num<0)
{
std::cerr<<"买的股票数不能为负数\n";
}
else
{
//买入num后 拥有股票数目要增加num
shares+=num;
//股票价值为买入时的价位
share_val=price;
//计算总共花了多少钱
set_tot();
}
}
//卖股票函数
void stock::sell(int num,double price)
{
using std::cerr;
if(num<0)
{
std::cerr<<"买的股票数不能为负数\n";
}
else if(num>shares)
{
cerr<<"不能卖出超出自己拥有的股票数目\n";
}
else
{

//进行卖操作以后,股票的数目减少
shares-=num;
//此时的股票价值是卖操作时的价格
share_val=price;
//计算此时的股票市值
set_tot();
}
}

私有部分是对类成员的声明

公共部分是对数据操作的函数进行定义(如何使用数据)

问题三 析构函数

先简单说一下析构函数

他就是用来释放内存的

假如我们的类函数中申请了内存,我们需要对内存空间进行释放  如果没有申请内存,则析构函数什么操作也不执行

析构函数的形式:~stock()

0 0