C ++: Ensayo 8 --- Espacio de nombres

  

  

La parte de implementación se coloca en el archivo fuente .cpp.

Ejemplo de modularización:

Archivo de encabezado (dentro está la declaración de funciones y clases)

//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);
};

  

  Menos de ganar es. \\. Está bajo Linux./.

 

  

Archivo fuente: 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;
   }
}

Función principal: 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;

}

 

  

Así que modifique el archivo de encabezado anterior:

//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

Del archivo de encabezado Rational.cpp anterior y la función principal main.cpp, ambos citan el archivo de encabezado Rational.h. A su vez, en el proceso de citación, ya lo hemos referenciado cuando se compiló la función principal por primera vez (se compilará la primera ejecución de Rational.h, no debe haber definido la constante RATIONAL_H, luego la definimos y ejecutamos el siguiente contenido , Know #endif); cuando llegó a Rational.cpp, también citó el archivo de encabezado Rational.h, e ingresó este archivo de encabezado nuevamente. En este momento, la constante RATIONAL_H ha sido definida y el contenido a continuación no Ejecutado, vaya directamente al lugar #endif.

  

 

Modifique la clase Rational anterior para que esté en su propio espacio de nombres:

//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

Luego, en Rational.cpp y main.cpp no ​​se pueden citar, necesita usar el espacio de nombres para encerrarlos en este Rational.cpp (en este archivo se usa para él) (es decir, la declaración y definición Adjúntelo), luego se lo llama en la función principal, luego podemos usar el espacio de nombres Mymath; o usar Mymath :: cada vez.

----------- Enlace y alcance

La unidad de traducción es la unidad de traducción después de compilar el archivo fuente.

  

  

  

   

Las variables definidas en la función solo existen dentro de la función sin ningún vínculo.

(1) static es un miembro estático, se almacena en su propio archivo fuente y no será alterado por otros archivos fuente.

(2) Dado que se usa extern, thatNum se puede redondear aquí (porque thatNum es una variable global declarada en that.cpp, por lo que extern se usa para detenerlo).

(3) No defina variables en el archivo de encabezado, la vida lo hará. Si tenemos que definirlo, lo declaramos estático (lo que significa que esta variable solo tiene enlaces internos y solo existe en la unidad de traducción de this.cpp) No queremos que cambie y usamos const para arreglarlo.

 

Supongo que te gusta

Origin blog.csdn.net/m0_37957160/article/details/109047187
Recomendado
Clasificación