C ++:エッセイ8 ---名前空間

  

  

実現部分は、ソースファイル.cppに配置されます。

モジュール化の例:

ヘッダーファイル(内部は関数とクラスの宣言です)

//Rational.h头文件的名称
//Create by Yuan创建者名字
//头文件作用:这个头文件声明了有理数类(Rational class)
//类里对四则运算进行重数,以实现分数运算

#include<iostream>//需要引进来一个头文件,因为下边用到了std
class Rational
{
  public:
     Rational(int num,int dencm);//num=分子;dencm=分母;
     Rational operator+(Rational rhs);//rhs **
     Rational operator-(Rational rhs);
     Rational operator*(Rational rhs)
     Rational operator/(Rational rhs)
  private:
     void normalize();//负责对分数的简化处理
     int numerator;//分子
     int dencminator;//分母
     
     friend std::ostream& operator<<(std::ostream& os,Rational f);
};

  

  勝ちは。\\です。Linuxの下にあります。

 

  

ソースファイル:Rational.cpp

#include"Rational.h"
#include<iostream>
#include<stdlib.h>

Rational::Rational(int num,int dencm)//头文件声明中的定义
{
   numerator=num;
   dencminator=dencm;

   normalize();
}
//normalize()//对分数进行简化操作包括:
//1.只允许分子为负数,如果分母为负数则把负数挪到分子部分,如1/-2=-1/2
//2.利用欧几里得算法(辗转求余原理将分数进行简化;2/10=>1/5)
void Rational::normalize()
{
  //确保分母为正
   if(dencminator<0)
   {
       numerator=- numerator; 
       dencminator=-dencminator;
   }
}

主な機能:main.cpp

#include"Rational.h"
#include<iostream>

int main()
{
  Rational f1(2,14);
  Rational f2(7,8);
  //测试有理数加法运算
  std::cout<<f1<<"+"<<f2<<"=="<<(f1+f2)<<"\n";
 //测试有理数减法运算
  std::cout<<f1<<"-"<<f2<<"=="<<(f1-f2)<<"\n";
 //测试有理数乘法运算
  std::cout<<f1<<"*"<<f2<<"=="<<(f1*f2)<<"\n";
 //测试有理数除法运算
  std::cout<<f1<<"/"<<f2<<"=="<<(f1/f2)<<"\n";
  return 0;

}

 

  

したがって、上記のヘッダーファイルを変更します。

//Rational.h头文件的名称
//Create by Yuan创建者名字
//头文件作用:这个头文件声明了有理数类(Rational class)
//类里对四则运算进行重数,以实现分数运算

#ifndef RATIONAL_H
#define RATIONAL_H
#include<iostream>//需要引进来一个头文件,因为下边用到了std
class Rational
{
  public:
     Rational(int num,int dencm);//num=分子;dencm=分母;
     Rational operator+(Rational rhs);//rhs **
     Rational operator-(Rational rhs);
     Rational operator*(Rational rhs)
     Rational operator/(Rational rhs)
  private:
     void normalize();//负责对分数的简化处理
     int numerator;//分子
     int dencminator;//分母
     
     friend std::ostream& operator<<(std::ostream& os,Rational f);
};
#endif

上記のRational.cppヘッダーファイルとメイン関数main.cppは、どちらもヘッダーファイルRational.hを引用しています。同時に、引用の過程で、メイン関数が初めてコンパイルされたときにすでに彼を参照しています(Rational.hの最初の実行がコンパイルされます、彼は定数RATIONAL_Hを定義していないはずです、それからそれを定義して次のコンテンツを実行します、Know #endif);彼がRational.cppに来たとき、彼はヘッダーファイルRational.hも引用し、このヘッダーファイルを再度入力しました。この時点で、定数RATIONAL_Hが定義されており、以下の内容は実行されました。#endifの場所に直接移動します。

  

 

上記のRationalクラスを独自の名前名に変更します。

//Rational.h头文件的名称
//Create by Yuan创建者名字
//头文件作用:这个头文件声明了有理数类(Rational class)
//类里对四则运算进行重数,以实现分数运算

#ifndef RATIONAL_H
#define RATIONAL_H
#include<iostream>//需要引进来一个头文件,因为下边用到了std

namespace Mymath
{
class Rational
{
  public:
     Rational(int num,int dencm);//num=分子;dencm=分母;
     Rational operator+(Rational rhs);//rhs **
     Rational operator-(Rational rhs);
     Rational operator*(Rational rhs)
     Rational operator/(Rational rhs)
  private:
     void normalize();//负责对分数的简化处理
     int numerator;//分子
     int dencminator;//分母
     
     friend std::ostream& operator<<(std::ostream& os,Rational f);
};
}
#endif

次に、Rational.cppとmain.cppを引用できない場合は、名前名を使用して、これらをこのRational.cppで囲む必要があります(このファイルでは彼に使用されます)(つまり、宣言と定義)彼を囲みます)、次に彼はmain関数で呼び出され、名前名Mymathを使用して使用するか、使用ごとにMymath ::を使用できます。

-----------リンクとスコープ

翻訳単位は、ソースファイルがコンパイルされた後の翻訳単位です。

  

  

  

   

関数で定義された変数は、リンクがまったくない関数内にのみ存在します。

(1)staticは静的メンバーであり、独自のソースファイルに格納され、他のソースファイルによって揺さぶられることはありません。

(2)externが使用されるため、thatNumはここで丸めることができます(thatNumはthat.cppで宣言されたグローバル変数であるため、externを使用してプルオーバーします)。

(3)ヘッダーファイルで変数を定義しないでください。人生はそうします。定義する必要がある場合は、静的として宣言します(つまり、この変数には内部リンクのみがあり、this.cppの変換ユニットにのみ存在します)。変更せず、constを使用して修正します。

 

おすすめ

転載: blog.csdn.net/m0_37957160/article/details/109047187
おすすめ