C ++ notas | 1 | Lección algunas preguntas básicas acerca de C ++

clase C ++ a algunas preguntas básicas primeras notas acerca de C ++

"Lenguaje C es de gran alcance, esperamos consolidar aún más el contenido del lenguaje C aprendido, que es la base para el siguiente paso de aprendizaje de C ++." - Maestro

la historia de C ++

En 1979, recién salido de la Universidad de Cambridge (CU) de doctorado de 29 años de edad, danés Bjarne Stroustrup (Jani Strauss especial Loup). Entrar en los Estados Unidos, AT & T Bell (Nueva Jersey) de laboratorio, comenzó a desarrollar el lenguaje C ++ C sobre la base de 1983 desarrollado un prototipo C ++.

1980 fue llamado originalmente: con la clase C (C con Clase) de 1983 fue nombrado oficialmente como C ++. Desde 1989, la estandarización de C ++ en 1994 puso en marcha la norma ANSI C ++

De septiembre de 2011 aprobó el último estándar ISO C ++ es: C ++ 11 (ISO / IEC 14882: 2011)

Introducción a C ++

Se llama C ++ orientado a objetos lenguaje de programación OOPL (Lenguaje de programación orientada a objetos)

C es un subconjunto de C ++, C ++ C para mantener la idea original de.

C ++ C sobre la base de palabras clave en el aumento: la captura, clase, const, borrar, amigo, en línea, nuevo, operador,, protegido, público, plantilla, esto, tiro, intento, typeid, virtual, palabra clave volátil privada, etc. .

El mecanismo más importante de aumento de C ++ en lenguaje C, hay tres:

  • Class (clase)
  • Sobrecarga de funciones (sobrecarga de funciones)
  • operador de sobrecarga (sobrecarga de operadores)

tipos de datos básicos

Nuevo Tipo: bool (booleano) sólo dos valores: verdadero / falso
a otro número bool ceder, se convertirá en una fuerza verdadera (no 0) o falso (es 0)
tipo bool (un byte) equivalente a char

Entrada / Salida

#include <iostream>
using namespace std;

El idioma original stdio.h C, string.h, math.h otros documentos citados que todavía permite
el uso, pero deben desmontarse .h sufijo de nombre de archivo, precedido c:

#include <cstring>
#include <cmath>

No hay ninguna diferencia esencial entre las operaciones de entrada y salida para la redacción general de los dos anteriores, pero las operaciones de archivo será muy diferente.

Común de E / S de la biblioteca corriente manipulador (Función):

  • setw configuración (int) son entonces (a) el contenido de la anchura de campo de salida, no romper automáticamente
  • setprecision (int) dispuesto posterior a la salida (a) del número en coma flotante de bits (excluyendo el punto decimal) - Nota: es el número total de dígitos
  • Todos los valores de salida hex número entero posteriores en hexadecimal
  • Todos posterior octubre número entero octal de salida
  • Todo valor decimal número entero subsiguiente DEC salida
  • retorno de carro endl
    con el fin de utilizar setw y setprecision, también debe citado al principio del programa iomanip.h añadir: #include <iomanip.h>o#include <iomanip>
#include <iostream> 
#include <iomanip> 
using namespace std;
void main(void)
{
int i=33, j=35, k=12345; float f=3.14159f;
cout << setw(10) << i << setw(8)<< j <<endl;
cout << setw(3) << k <<endl; // 场宽不足,自动突破
cout << hex << i <<setw(3) << j <<endl; // 用十六进制输出整数 
cout << i <<setw(3) <<j <<endl;
cout << oct << i <<setw(j/8) << j <<endl; // 用八进制输出整数
cout << setw(12) << setprecision(5) << f << endl;
cout << setw(4)<<setprecision(6)<<f<<endl; //场宽不足,自动突破
cout << setprecision(4) << f << endl; // 未定场宽,按照实际宽度输出 
cout << setprecision(1) << f << endl;
cout << setprecision(2) << 314.159 << endl; }
//运行结果
        33      35
12345
21 23
21 23
41  43
      3.1416 //这里总位数5位
3.14159
3.142
3 //保留到一位,相当于取整(只针对0.0~9.9)
3.1e+02
Press any key to continue . . .
char s1[20], s2[20], s3[20];
cin >> s1 >> s2 >> s3;
// 等同于 scanf("%s%s%s", s1, s2, s3);
cout << s1 << s2 << s3 << endl;
// 若从键盘上输入:How are you?
// 输出结果是: Howareyou? 整行输入字符串:
cin.getline(s1, N, 结束符); // '\n' 为默认结束符,这里可以缺省参数
cin.get(s2, N, 结束符); // 一次连续读入多个(包括空格)字符,直到读满N-1个,或遇到 结束符
// getline读取但不存结束符,get既不读取也不存结束符

Las funciones en línea

Con el fin de mejorar la eficiencia, los aumentos C ++ inline de función. Definición y macro similar definen, posición compilador nombre de la función aparecerá reemplazarlo con un código cuerpo de la función de la llamada en línea, por lo que guardar los parámetros de la pila de llamadas de función, desapilar, el tiempo que se tarda en saltar y así sucesivamente. función en línea conveniente que definir, la función también más fuerte, y no simplemente la cadena de reemplazo, tenga plenamente en cuenta la relación del tipo.

Declarado como funciones en línea: inline complemento antes de la función

Escribiendo función en línea tiene algunas limitaciones (pero no uniforme claramente definido, determinado por el alcance de los diversos compilador inteligente):
• función en línea puede definir una variable, puede utilizar el bucle, declaraciones como ramificación;
• pero en línea función recursiva no directamente o indirectamente recursiva;
• otra para que el compilador no puede poner el caso de llamadas a funciones en línea.
Los que no pudieron obtener una línea función de compilación llamada de función en línea, el compilador ignorará automáticamente en línea, pensar en ella como una función general a la llamada, se produce un error en línea de forma automática.

Asignación dinámica de memoria

C ++ con nueva y borrar dinámicamente asignar y liberar memoria, equivalente a la funciones de C malloc y libre, pero el nuevo y borrar más potente

int *p=new int(10); //赋值
delete p;
int *pt=new int[10]; //数组
delete []pt;
int (*ptt)[10]=new int[8][10]; //分配80个int单元// pt是一个二维动态数组,ptt[0][0]~ptt[7][9]
delete []ptt;
int **q=new int *[10];
delete []q;

cita

C ++ proporciona un mecanismo para pasar una dirección de referencia variable.

Cabeza para pasar el nombre de parámetro de función y dirección de más antes, y llama a la función de la misma manera.
La asignación de esta variable para pasar variables declaró en un discurso a la función llamada, la operación es en realidad una llamada directa a una función de la variable correspondiente.

#include <iostream>
using namespace std;
void swap(int &a, int &b) // 引用声明传递a,b变量的地址 
{ 
    int t=a;
    a=b; 
    b=t; 
}
void main()
{ 
    int i=3, j=5;
    swap(i, j); //交换i, j的值
    cout << i <<'\t'<< j<<endl ;
}
// 输出结果 : 5  3 
// a和b的值已经交换

Referencia (pasar dirección variable) además de simplificar los procedimientos al escribir, sino también mejorar la eficiencia del programa, ya que cuando la transmisión es una estructura (objetos), simplemente pase su dirección, de modo que la función de acceder directamente, sin tener que pasar de acuerdo con el lenguaje C el valor de la estructura de modo (objeto) para las funciones de lista de parámetros.

Ver más tarde: el constructor de copia para la clase, de esta manera mecanismo de referencia (pasa dirección variable), y no es un lujo sino una necesidad.

valor de retorno función puede devolver una referencia, por lo que sólo tiene que pasar también la cantidad de dirección de retorno, así que llame a la función se accede directamente, sin tener que pasar valores en el lenguaje C de manera volverá después de copiar monto de la transferencia se devuelve. Pero no se puede devolver una referencia a una variable local.

using namespace std;
const int &max(int &a, const int &b) 
{ 
    return a>b? a:b;// 返回的是a或b也就是i或j的地址 
}
void main()
{ 
    int i=3, j=5, k;
    k=max(i, j); //取i, j的值
    cout << k <<endl ; 
}

Referencia (referencia) es un tipo especial de variable, se puede considerar a una variable alias.

int i, j;
int &r=i; // 变量引用,r和i是同一个内存单元
// r不能再改变引用,可以认为r是i的别名
i=10;
j=r; // 等价于i=20

Tipo const calificador

const es una que aparezca Tipo de modificador en frente de o detrás del tipo de variable se ha definido anteriormente, haciendo que la cantidad de no modificable, es decir, constante.

Por ejemplo, int const a=1;o const int a=1;la variable para convertirse en una cantidad no modificable equivalente a una constante C, pero más fuerte que la función del lenguaje C constante const, como es el tipo de correa const.

Parámetros de función const menudo se utilizan para prevenir la destrucción accidental de los valores de los parámetros en la función o el contenido se hace referencia.
Por ejemplo, strcpy(char *str2, const char *str1);copiando un str1 cadena a str2. El parámetro se define como const str1, es para prevenir el daño se hace referencia en la función de cadena str1 strcpy.

En particular, la introducción de la masa en C ++ la dirección de referencia mecanismo, el valor const o significado a garantizar que el contenido no modifica las variables de parámetros en la función de

A menudo, un objeto
además de la definición de un valor inicial de una sola vez, no puede cambiar su valor, de modo que cuando el efecto protector común.
const STU a={"Zhang San", 'm', 2019000001};

A menudo, los miembros de datos

struct STU
{
    char name[10];
    char gender;
    static int const sno=1;//静态常数据成员 
    //static与const同时出现
}

Con frecuencia puntero de
tal STU *const p=&a, sólo puede ser asignado en la inicialización

A menudo, el puntero de objeto que apunta
a menudo punteros STU *const py punteros en general STU *plata normalmente no sujeta a punto

Usando const STU *p = &a;el puntero a una. El puntero puede ser modificado
Conclusión: puntero que apunta objeto no es normalmente puntero constante, puede ser modificado, también puede apuntar a un objeto ordinario.

A menudo, a menudo señalado objeto puntero
const STU * const p = &a; apunta a un momento de la inicialización y no puede ser modificado

Alcance y visibilidad

C ++ operador alcance introducido (operador de alcance) '::', de manera que podamos acceder a la variable local con el mismo nombre, al mismo tiempo (como máximo) y las variables globales (:: max)

#include <iostream>
using namespace std;
const int max=10000;
void main( ) // 从键盘上读入10个数,求最大值max输出,但最大不超过10000 
{ 
    int max, i,j;
    cin >> max;
    for (j=1; j<10;j++) 
    {
        cin >> i;
        if (i>max) max = i;
        if (max > ::max) max = ::max; 
    }
    cout << max<<endl; 
}
//若max大于外部变量max的值,则取外部常量max的值, 这种做法通常用来防止数组越界或溢出。

Los parámetros por defecto

Usted puede omitirse de la correcta o más parámetros de una llamada de este tipo de funciones.
El valor por defecto se puede especificar como uno o más parámetros en la declaración de la función, que puede ser omitido de la correcta o más parámetros de una llamada de este tipo de funciones.

void delay(int day=1, int month=3, int year=2019)
{............}

Abstracción de datos

La separación de los tipos de datos y operaciones, se hace referencia como la abstracción de datos

T abs(T i)
{ returni<0?–i:i; }

objetos

A (grupo) las variables, así como actuar en un (grupo) como una función de estas variables una unidad de envasado, que se denomina un objeto.

Los objetos de la misma clase es abstracta (descripción de las características comunes), el objeto es una instancia de la clase.

Objeto ha cerrado, se puede controlar el acceso al mundo exterior de su propia, que controlan estrictamente el acceso al mundo exterior que está encapsulado variable.

Publicado 10 artículos originales · ganado elogios 0 · Vistas 188

Supongo que te gusta

Origin blog.csdn.net/qq_45379253/article/details/104868460
Recomendado
Clasificación