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()
- C/C学习笔记/函数与程序结构
- C++学习笔记1 类与析构函数
- C++ 析构函数与构造函数 学习笔记1
- C++学习笔记11 构造函数与析构函数
- 【学习C++】学习C++ -> 构造函数与析构函数
- C/C++学习笔记:String类的构造函数、析构函数和赋值函数
- C/C++_log2000_函数模板与类模板笔记1
- C++学习笔记---构造函数与析构函数
- C++:函数<学习笔记>
- 【C++】学习笔记四十七——类的构造函数和析构函数
- 一步一步学习C++(类)之构造函数与析构函数
- 学习笔记1-C++-strcat,strcpy函数
- C与指针学习笔记——函数指针
- C学习笔记(六)函数、数组与指针
- C学习笔记(七)字符串与字符串函数
- 多态性与虚函数——C/C++学习笔记
- C语言学习笔记_5函数与程序结构
- 高质量C/C++编程指南 阅读笔记(四)类的构造函数、析构函数与赋值函数
- 转一份在 51testing 上的讨论——如何测试一个门户网站是否可以支持10万用户同时在线?
- 网络安全那些事儿
- DES算法初探
- [spark] mllib决策树通过Strategy修改内存,java实现
- POJ 1740 A New Stone Game(博弈)
- C++学习笔记1 类与析构函数
- 【Linux开发】Ubuntu图形界面切换与磁盘扩展分区
- java定时任务
- VC 线程
- 我的Map实现
- JAVA MAP相关
- 启动MongoDB时cmd窗口一闪而过
- Java 程序员必须收藏的资源大全
- 【转载】CSDN-markdown语法之如何使用LaTeX语法编写数学公式