[Conceptos básicos de C++: 24]: [Plantilla importante] Sobrecarga del operador de entrada y salida de C++ [Tome la clase de fecha Fecha como ejemplo]

Descripción del artículo de la serie.

Esta serie de artículos relacionados con C ++ es solo para las notas de estudio del autor. ¡Utilizaré mi propio conocimiento para registrar el estudio! La serie de aprendizaje de C ++ se dividirá en tres etapas: conceptos básicos, STL y estructuras y algoritmos de datos avanzados . Los contenidos clave relevantes son los siguientes:

  1. Conceptos básicos : clases y objetos (que involucran las tres características principales de C++, etc.);
  2. STL : aprenda a utilizar las bibliotecas relacionadas con STL proporcionadas por C++ ;
  3. Algoritmos y estructuras de datos de alto orden : implemente manualmente su propia biblioteca STL y diseñe e implemente estructuras de datos de alto orden , como árbol B, árbol B +, árbol rojo-negro, etc.

Conjunto de estudio:



Prefacio

  • El método de escritura de funciones sobrecargadas de operadores es relativamente fijo. En el número anterior, el autor lo presentó, diseñó e implementó 关系运算符的重载(点击跳转)para resolver la comparación de tipos / objetos personalizados.
  • En este artículo, el autor compartirá con usted los 自定义类型 / 对象problemas de entrada y salida de! Es decir: 重载 C++ 输入输出运算符.

1. Problemas con la entrada y salida de tipos personalizados

Como se muestra a continuación: Consejo: ¡No hay operadores de entrada/salida que coincidan con estas operaciones! C ++ en sí solo admite la entrada y salida básica de tipos de datos integrados. Para nuestros tipos implementados de forma personalizada (como clase de tiempo, clase de información del estudiante, etc.), se requiere una sobrecarga personalizada.

  • >>: Operador de entrada de flujo; [archivo de encabezado: istream; en el espacio de nombres estándar]
  • <<: Operador de salida de flujo; [archivo de encabezado: ostream; en el espacio de nombres estándar]

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí


2. Sobrecarga de operadores de entrada y salida en C++ (tomando la clase de fecha como ejemplo)

1. Marco básico de la clase de tiempo.

El código es el siguiente (ejemplo):

#include<iostream>
using std::cout;
using std::endl;
using std::cin;

class Date {
    
    
public:
	Date(int year = 1970,int month = 1, int day = 1) 
		:_year(year),_month(month),_day(day)
	{
    
    

	}
	void Print() {
    
    
		cout << _year << "-" << _month << "-" << _day << endl;
	}


private:
	int _year;
	int _month;
	int _day;
};

2. ¡Instrucciones de sobrecarga de entrada y salida!

流输入y 流输出también son objetos en sí mismos, correspondientes a: istream 类y ostream 类(con respecto a problemas de flujo de datos, ¡los compartiré en contenido posterior!)

  • 返回值类型即:istream / ostream
  • ¡También presentado en artículos anteriores! Dado que la sobrecarga de entrada y salida puede estar restringida por el limitador de alcance de la clase, generalmente se implementa en forma de funciones amigas. 友元介绍:friend 友元四连问(点此查看).

3. Ejemplo de sobrecarga de entradas y salidas

El código es el siguiente (ejemplo): ¡presta atención a los comentarios en el código!

#include<iostream>
using std::cout;
using std::endl;
using std::cin;
using std::istream;			/* 注意此处! */
using std::ostream;			/* 注意此处! */

class Date {
    
    
public:
	Date(int year = 1970,int month = 1, int day = 1) 
		:_year(year),_month(month),_day(day)
	{
    
    

	}
	void Print() {
    
    
		cout << _year << "-" << _month << "-" << _day << endl;
	}
	
	/* 流输入输出的重载:注意两个函数的第二个参数写法! */
	friend ostream& operator << (ostream& out, const Date& d);
	friend istream& operator >> (istream& in, Date& d);
private:
	int _year;
	int _month;
	int _day;
};



/* 流输入输出的重载 */
inline ostream& operator << (ostream& out, const Date& d) {
    
    
	out << d._year << "年" << d._month << "月" << d._day << "日" << endl;
	return out;
}
inline istream& operator >> (istream& in, Date& d) {
    
    
	in >> d._year >> d._month >> d._day;
	return in;
}

Ejemplo de resultados en ejecución (abajo)

Insertar descripción de la imagen aquí


Artículos relacionados

1. [Capítulo básico de C++: 21]: amigo Los amigos hicieron cuatro preguntas: ¿Qué es un amigo? ¿Clase de amigos? ¿Función de amigo? ¿Cuándo usar amigos?
2. [Conceptos básicos de C++: 22]: Objetos constantes y funciones/métodos de miembros constantes de clases y problemas comunes que involucran const en clases.
3. [Conceptos básicos de C++: 23]: [Plantilla importante] Diseño e implementación de sobrecarga de operadores relacionales: [ > , < , >= , <= , != , == ] sobrecarga [tomando la clase Fecha y hora como ejemplo]


Supongo que te gusta

Origin blog.csdn.net/weixin_53202576/article/details/131175788
Recomendado
Clasificación