"C ++ efectivo" (2)

Inserte la descripción de la imagen aquí

Prefacio

Al reunirme con los hermanos mayores hoy, entré en contacto con muchas cosas nuevas.
Me estoy esforzando por terminar esta serie hoy. Recientemente, la información es demasiado para analizar. Primero, envíelo lentamente.
Por favor, dame algo de tiempo y esperaré un momento.

A continuación, habrá grandes movimientos.


13, puntero inteligente

No diré mucho, solo utilícelo directamente.

18.Hacer que la interfaz sea más fácil de usar correctamente y que no sea fácil de usar incorrectamente.

Me salté una ola en el medio, no hay razón, no entiendo.

Esta cláusula me recuerda el "patrón de método de plantilla", pero no sé cómo usar este patrón, ni cómo usarlo, ni para qué es útil. Ahora conozco otro uso.

Tome la primera pequeña demostración que hice, que es una función de control de entrada y salida.
Esta demostración también ha sido muy utilizada en mi labor docente. Aunque las respuestas enviadas al final no son muy ideales, permítanme decirles que los amigos que estén interesados ​​pueden implementarla por sí mismos:

1、语言不限,最好是C/C++,Python封装的太好了,体现不出我们的水平
2、输入一个字符串
3、我要控制输入的为纯英文
4、我要控制输入的为纯数字
5、我要控制输入的可以有英文、数字、标点混搭
6、基于以上3/4/5,我要控制输入长度一定
7、我输错了要支持回删
8、我要密文输入,不能在屏幕上显示我输入的是什么

Esta es la plantilla y la entrada incorrecta no se contará.
Es como escribir una línea en la pantalla: por favor ingrese inglés y números, y luego todavía puedo ingresarlo de manera casual. Ingreso un montón de puntuación y me dice que la entrada es ilegal. ¿Qué ocurre? Ilegal me permites entrar?


22. Declare las variables miembro como privadas

Yo siempre hago esto.
Eso es.


23. Reemplazar la función de miembro con no miembro y no amigo

No sabía lo que estaba pasando antes y sentí que el maestro suponía un esfuerzo extra, pero ahora lo sé. Este es el patrón del método de plantilla. Para proteger la encapsulación.

Suposición:

class A{
    
    
public:
	a();
	b();
	c();
}

Para resolver una solución, debe llamar a abc a su vez, en caso de que esté en la clase de escena:

A *AA = new A();
AA->a();
AA->b();
AA->c();

?

todavía lo es

class A{
    
    
public:
	run(){
    
    
		a();
		b();
		c();
	}
}

int main(){
    
    
	AA->run();
}

¿Qué piensas?


26. Retrase la aparición de definiciones de variables tanto como sea posible

Algunos libros o tutoriales le dirán que las definiciones de variables están escritas al principio de la función bajo la apariencia de especificaciones de programación y arte de programación. Este es el caso en el lenguaje C. De lo contrario, las siguientes variables no podrán asignar recursos, lo que resultará en un error. Pero C ++ no es así.

Tienes que tener claro, una vez que hay una rama dentro de la función, es posible que algunos objetos no tengan la oportunidad de aparecer en la escena, entonces, ¿por qué la defines tan apresuradamente?

Una vez involucrada la definición de la variable, habrá costos de construcción y análisis, independientemente de si se utiliza o no.

No solo debe posponer la definición de la variable tanto como sea posible, es mejor posponerla hasta el momento en que se le pueda asignar un valor a la variable.


Por supuesto, la situación específica se analiza en detalle, si encuentra una variable temporal en el ciclo, es otra cuestión.

No hay más de dos situaciones en el bucle, la definición fuera del bucle y la definición dentro del bucle:

11个构造函数+一个析构函数+n个赋值操作
2、n个构造函数+n个析构函数

Si el costo de asignación es menor que el costo de construcción + destrucción (la variable no es grande), elija el primer método.
En este momento, depende de la experiencia.


27. Intenta minimizar las transformaciones

Si es su propia operación de transformación, haga menos y trate de no hacerlo.
Debido a los diferentes compiladores o plataformas, es posible que no se reconozcan entre sí.


31. Minimizar la dependencia de compilación entre archivos

Si quieres usarlo, tienes que usarlo, ¿cómo se puede reducir esto? No queremos estar llenos y no tenemos nada que hacer para citar un archivo de encabezado que no es necesario.


Ven aquí

Supongo que te gusta

Origin blog.csdn.net/qq_43762191/article/details/115033379
Recomendado
Clasificación