【C++primer学習】2.6カスタムデータ構造

2344 ワード

この章ではキーワードstructでSaleを構築します.dataクラス.完全なクラスではなく、知識はデータ要素を整理しようとしています.
Scale_dataは次のように定義されます.
struct Sale_data{
    std::string bookNo;
    unsigned units_sold=0;//   
    double revenue=0.0;//    
};

注意:C++の新しい基準では、データ・メンバーにクラス内の初期値を与えることができます.
初期値のないメンバーはデフォルトで初期化されます.任意の関数体以外に定義された変数は0に初期化されます.関数ボディの内部に定義されている組み込み変数は初期化されません.初期化されていない組み込み型変数の値は定義されていません.コピー操作や他の形式でアクセスするとエラーが発生します.
独自のヘッダファイルを作成
クラスは通常、ヘッダファイルに定義され、クラスが存在するヘッダファイルの名前はクラスの名前と一致する必要があります.
ヘッダファイルには、通常、クラス、const、constexpr変数など、前回のみ使用できるエンティティが含まれます.
次はSale_を実現しますDataクラスの定義(Sale_data.hファイル)は、主関数でISBN番号が同じ書籍の収入と加算(main.cppファイル)を行います.文字列操作にかかわるため、上記の2つのファイルにはstring.hヘッダファイルが含まれます.Sale_dataクラスを使用する手順は、string.hヘッダファイルを2回前後して含みます.1回は直接含む(main.c)は、Sale_data.hを含むことが暗黙的に含まれるにつれて行われる.ヘッダファイルを書く際には適切な処理が必要であり、ヘッダファイルが複数回含まれても安全に動作するようにプリプロセッサ技術が用いられる.
プリプロセッサの概要
プリプロセッサはコンパイル前に実行されるプログラムで、私たちが作成したプログラムを一部変更することができます.
(1)#include
(2)前処理変数に依存するヘッダー・ファイル・プロテクタ.前処理変数には、定義済と未定義の2つのステータスがあります.
#defineコマンド名前を前処理変数に設定#
#ifdef変数が定義されている場合のみ真
#ifndef変数が定義されていない場合のみ真です.チェック結果が真であれば、endif命令に遭遇するまで後続の操作を実行します.
 
以下はsale_data.hのコード
#ifndef SALE_DATA_H
#define SALE_DATA_H
#include 

struct Sale_data{
    std::string bookNo;
    unsigned units_sold=0;//   
    double revenue=0.0;//    
};

#endif // SALE_DATA_H

SALE_DATA_H前処理変数が定義されていない場合、SALE_を定義するDATA_H変数の前処理とstringヘッダファイルのインポート、sale_の定義dataクラス.出会いが終わるまで.
以下はmianです.cppコード:
#include
#include
#include "Sale_data.h"

int main()
{
    Sale_data data1,data2;
    double price=0;//    ,        
    //  data1 data2
    std::cin>>data1.bookNo>>data1.units_sold>>price;
    data1.revenue=data1.units_sold*price;
    std::cin>>data2.bookNo>>data2.units_sold>>price;
    data2.revenue=data2.units_sold*price;

    //  data1 data2 ISBN    
    if(data1.bookNo==data2.bookNo){
        unsigned totalCnt=data1.units_sold+data2.units_sold;//   
        double totalRevenue=data1.revenue+data2.revenue;//   

        //  :ISBN、    、    
        std::cout<