第六章c++学习入门之类的使用

c++系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
第六章 c++学习入门之类的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

c++中类是什么?

类的思想为:数据抽象和封装 分离的编程。
使用类定义自己的数据类型。
数据抽象:依赖于接口(interface),即用户能执行的操作和实现(implementation),即类的数据成员,负责接口实现的函数体和定义类所需的各种私有函数。

封装:实现类的接口和实现分离。

一、定义抽象数据类型

SalesItem是一个抽象类,可以通过SalesItem的接口来使用一个SalasItem对象。
不能访问以及不知道SalesItem对象的数据成员。
然而,SalesData类不是一个抽象类,它天生就是由用户来编写操作,为了能编写操作,其所有数据成员可以使用。
(如果想把SalesItem变成抽象类,可以定义一些操作给类的用户使用,然后封装(隐藏)数据成员。)

1.1设计SalesData抽象类

SalseData类的接口应该包括操作:
1.一个ISBN()成员函数,用于返回对象的ISBN号;
2.一个combine()成员函数,用于将一个SalesData对象加到另一个对象上;
3.一个名为add()的函数,执行两个SalesData对象的加法;
4.一个read()函数,将数据从istream中读入到SalesData对象中;
5.一个print()函数,将SalesData对象输出到ostream;

假设类已定义好,如何使用上述5个接口函数,
比如,使用这些接口函数编写一个书店程序。

#include<iostream>
#include"SalesData.h"
using namespace std;

int main(){
    //instantiate a class,store current variable of sum result
    SalesData total;
    // read first trade
    if(read(cin,total)){
        //store next trade
        SalesData trans;
        //read other trade
        while(read(cin,trans)){
            //compare two book's isbn
            if(total.isbn()==trans.isbn()){
                //update current total,add trans to tatal
                total.combine(trans);
            }
            //two book's isbn difference
            else{
                //input current book's total
                print(cout,total) << endl;
                //process next book
                total = trans;
            }
        }
        // input last trade
        print(cout,total)<<endl;
    }
    //not data input at all
    else{
        //inform user
        cerr<<"NO data?!"<<endl;
    }
}

1.2 定义SalesData类

类属于头文件,要以.h结束,
格式为:
#ifndef NAME_H
#define NAME_H
//源码
#endif
类声明时,为
class name{ //代码体 };代码体;
成员数据包括:
ISBN编号:string bookNo;
本书销量: unsigned int unitsSold;
总销售收入:double revenue;

成员函数包括:
combine();
isbn();
非接口函数 avgPrice();
成员函数声明必须在内部,定义在内部或外部都可以,
作为接口组成的非成员函数,声明和定义都在类外部,如add,print,read。

1.3构造函数

constructor:初始化类对象的数据成员。
只要类的对象被创建,类就会执行构造函数。
构造函数名字和类名相同,没有返回类型。
可以有多个(需重载)。
定义构造函数,
1.一个istream&,从中读取一条交易信息,
2.一个string &,表示isbn编号;一个unsigned int,表示图书数量;一个double,表示图书售价,

 //string isbn,unsigned int unitsSold,double p
    sales_data(string &s,unsigned int num,double p):bookNo(s),unitsSold(num),revenue(p*num) {}

3.一个string &,表示isbn编号,编译器将赋予其他成员默认值,

  //a string present isbn,other variable default
    sales_data(string &s) :bookNo(s) {}

4.一个空参数列表(即默认构造函数),

 //no param list,default constructor
    sales_data()=default;

二.访问控制与封装

三.类的其他特性

四.类的作用域

五.构造函数

六.类的静态成员

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN-JackZhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值