Основы языка программирования C++ с применением объектно-ориентированного программирования. Чернышов М.К. - 53 стр.

UptoLike

Составители: 

Ⱦɪɭɠɟɫɬɜɟɧɧɨɣ ɦɨɠɟɬ ɛɵɬɶ ɢ ɮɭɧɤɰɢɹ, ɧɟ ɹɜɥɹɸɳɚɹɫɹ ɤɨɦɩɨɧɟɧɬɨɣ
ɤɚɤɨɝɨ-ɥɢɛɨ ɤɥɚɫɫɚ, ɧɚɩɪɢɦɟɪ:
class XX
{
friend int printXX();
/* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ ɏɏ */
}
Ɂɞɟɫɶ ɮɭɧɤɰɢɹ
printXX ɢɦɟɟɬ ɞɨɫɬɭɩ ɤɨ ɜɫɟɦ ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ XX,
ɧɟɡɚɜɢɫɢɦɨ ɨɬ ɡɚɤɪɟɩɥɟɧɧɨɝɨ ɡɚ ɧɢɦɢ ɭɪɨɜɧɹ ɞɨɫɬɭɩɚ.
ȼ ɬɟɨɪɢɢ ɨɛɴɟɤɬɧɨ-ɨɪɢɟɧɬɢɪɨɜɚɧɧɨɝɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɫɱɢɬɚɟɬɫɹ,
ɱɬɨ ɩɪɢ ɯɨɪɨɲɨ ɫɩɪɨɟɤɬɢɪɨɜɚɧɧɨɣ ɫɢɫɬɟɦɟ ɤɥɚɫɫɨɜ ɧɟ ɞɨɥɠɧɨ ɛɵɬɶ ɧɟɨɛ-
ɯɨɞɢɦɨɫɬɢ ɜ ɞɪɭɠɟɫɬɜɟɧɧɵɯ ɮɭɧɤɰɢɹɯ, ɨɞɧɚɤɨ ɜ ɪɹɞɟ ɫɥɭɱɚɟɜ ɢɯ ɢɫɩɨɥɶ-
ɡɨɜɚɧɢɟ ɭɩɪɨɳɚɟɬ ɩɨɧɢɦɚɧɢɟ ɢ ɩɨɫɥɟɞɭɸɳɢɟ ɦɨɞɢɮɢɤɚɰɢɢ ɩɪɨɝɪɚɦɦɵ.
4.7. ɋɬɚɬɢɱɟɫɤɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ
Ɉɩɢɫɚɬɟɥɶ static ɜɋ++ ɢɦɟɟɬ ɪɚɡɥɢɱɧɨɟ ɧɚɡɧɚɱɟɧɢɟ ɜ ɡɚɜɢɫɢɦɨɫɬɢ
ɨɬ ɤɨɧɬɟɤɫɬɚ, ɜ ɤɨɬɨɪɨɦ ɨɧ ɩɪɢɦɟɧɟɧ.
ɉɟɪɟɦɟɧɧɵɟ ɢ ɮɭɧɤɰɢɢ, ɨɛɴɹɜɥɟɧɧɵɟ ɜɧɟ ɤɥɚɫɫɚ ɢ ɜɧɟ ɬɟɥɚ ɮɭɧɤɰɢɢ ɫ
ɨɩɢɫɚɬɟɥɟɦ
static, ɢɦɟɸɬ ɨɛɥɚɫɬɶ ɞɟɣɫɬɜɢɹ, ɨɝɪɚɧɢɱɟɧɧɭɸ ɮɚɣɥɨɦ, ɜɤɨ-
ɬɨɪɨɦ ɨɧɢ ɨɛɴɹɜɥɟɧɵ.
ɉɟɪɟɦɟɧɧɵɟ, ɨɛɴɹɜɥɟɧɧɵɟ ɤɚɤ
static ɜɧɭɬɪɢ ɮɭɧɤɰɢɢ, ɜɢɞɢɦɵ ɬɨɥɶ-
ɤɨ ɜɧɭɬɪɢ ɷɬɨɣ ɮɭɧɤɰɢɢ, ɧɨ ɫɨɯɪɚɧɹɸɬ ɫɜɨɢ ɡɧɚɱɟɧɢɹ ɩɨɫɥɟ ɜɵɯɨɞɚ ɢɡ
ɮɭɧɤɰɢɢ ɢ ɢɧɢɰɢɚɥɢɡɢɪɭɸɬɫɹ ɬɨɥɶɤɨ ɩɪɢ ɩɟɪɜɨɦ ɨɛɪɚɳɟɧɢɢ ɤ ɮɭɧɤɰɢɢ.
Ʉɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ ɬɚɤɠɟ ɦɨɝɭɬ ɨɛɴɹɜɥɹɬɶɫɹ ɫ ɨɩɢɫɚɬɟɥɟɦ
static,
ɬɚɤɢɟ ɤɨɦɩɨɧɟɧɬɵ - ɞɚɧɧɵɟ ɹɜɥɹɸɬɫɹ ɨɛɳɢɦɢ ɞɥɹ ɜɫɟɯ ɷɤɡɟɦɩɥɹɪɨɜ ɨɛɴɟɤ-
ɬɨɜ ɷɬɨɝɨ ɤɥɚɫɫɚ ɢ ɪɚɡɦɟɳɚɸɬɫɹ ɜ ɩɚɦɹɬɢ ɨɬɞɟɥɶɧɨ ɨɬ ɞɚɧɧɵɯ ɨɛɴɟɤɬɨɜ
ɤɥɚɫɫɚ. Ⱦɨɫɬɭɩ ɤ
static-ɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ ɜɨɡɦɨɠɟɧ ɩɨ ɢɦɟɧɢ, ɭɬɨɱɧɟɧ-
ɧɨɦɭ ɢɦɟɧɟɦ ɤɥɚɫɫɚ (ɢɦɟɧɟɦ ɬɢɩɚ) ɢɥɢ ɢɦɟɧɟɦ ɨɛɴɟɤɬɚ ɷɬɨɝɨ ɤɥɚɫɫɚ, ɩɪɢ-
ɱɟɦ ɤ
static-ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ ɦɨɠɧɨ ɨɛɪɚɳɚɬɶɫɹ ɞɨ ɫɨɡɞɚɧɢɹ ɷɤɡɟɦɩ-
ɥɹɪɨɜ ɨɛɴɟɤɬɨɜ ɷɬɨɝɨ ɤɥɚɫɫɚ. ɋɬɚɬɢɱɟɫɤɨɟ ɞɚɧɧɨɟ-ɱɥɟɧ ɤɥɚɫɫɚ ɞɨɥɠɧɨ ɛɵɬɶ
ɨɛɹɡɚɬɟɥɶɧɨ ɢɧɢɰɢɚɥɢɡɢɪɨɜɚɧɨ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ:
class TBase //ɛɚɡɨɜɵɣ ɤɥɚɫɫ ɞɥɹ ɦɚɫɫɢɜɨɜ ɜɫɟɯ ɬɢɩɨɜ
{
static int nw;
int size, // ɪɚɡɦɟɪ ɷɥɟɦɟɧɬɚ
count, // ɬɟɤɭɳɟɟ ɱɢɫɥɨ ɷɥɟɦɟɧɬɨɜ
maxCount, // ɪɚɡɦɟɪ ɜɵɞɟɥɟɧɧɨɣ ɩɚɦɹɬɢ
delta; //ɩɪɢɪɚɳɟɧɢɟ ɩɚɦɹɬɢ
/* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ TBase */
}
int TBase::nw=1; /* ɂɧɢɰɢɚɥɢɡɚɰɢɹ ɫɬɚɬɢɱɟɫɤɨɣ ɤɨɦɩɨɧɟɧɬɵ
ɤɥɚɫɫɚ */
53
    Ⱦɪɭɠɟɫɬɜɟɧɧɨɣ ɦɨɠɟɬ ɛɵɬɶ ɢ ɮɭɧɤɰɢɹ, ɧɟ ɹɜɥɹɸɳɚɹɫɹ ɤɨɦɩɨɧɟɧɬɨɣ
ɤɚɤɨɝɨ-ɥɢɛɨ ɤɥɚɫɫɚ, ɧɚɩɪɢɦɟɪ:
     class XX
         {
         friend int printXX();
         /* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ ɏɏ */
         }
    Ɂɞɟɫɶ ɮɭɧɤɰɢɹ printXX ɢɦɟɟɬ ɞɨɫɬɭɩ ɤɨ ɜɫɟɦ ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ XX,
ɧɟɡɚɜɢɫɢɦɨ ɨɬ ɡɚɤɪɟɩɥɟɧɧɨɝɨ ɡɚ ɧɢɦɢ ɭɪɨɜɧɹ ɞɨɫɬɭɩɚ.
    ȼ ɬɟɨɪɢɢ ɨɛɴɟɤɬɧɨ-ɨɪɢɟɧɬɢɪɨɜɚɧɧɨɝɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɫɱɢɬɚɟɬɫɹ,
ɱɬɨ ɩɪɢ ɯɨɪɨɲɨ ɫɩɪɨɟɤɬɢɪɨɜɚɧɧɨɣ ɫɢɫɬɟɦɟ ɤɥɚɫɫɨɜ ɧɟ ɞɨɥɠɧɨ ɛɵɬɶ ɧɟɨɛ-
ɯɨɞɢɦɨɫɬɢ ɜ ɞɪɭɠɟɫɬɜɟɧɧɵɯ ɮɭɧɤɰɢɹɯ, ɨɞɧɚɤɨ ɜ ɪɹɞɟ ɫɥɭɱɚɟɜ ɢɯ ɢɫɩɨɥɶ-
ɡɨɜɚɧɢɟ ɭɩɪɨɳɚɟɬ ɩɨɧɢɦɚɧɢɟ ɢ ɩɨɫɥɟɞɭɸɳɢɟ ɦɨɞɢɮɢɤɚɰɢɢ ɩɪɨɝɪɚɦɦɵ.

4.7. ɋɬɚɬɢɱɟɫɤɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ

     Ɉɩɢɫɚɬɟɥɶ static ɜ ɋ++ ɢɦɟɟɬ ɪɚɡɥɢɱɧɨɟ ɧɚɡɧɚɱɟɧɢɟ ɜ ɡɚɜɢɫɢɦɨɫɬɢ
ɨɬ ɤɨɧɬɟɤɫɬɚ, ɜ ɤɨɬɨɪɨɦ ɨɧ ɩɪɢɦɟɧɟɧ.
     ɉɟɪɟɦɟɧɧɵɟ ɢ ɮɭɧɤɰɢɢ, ɨɛɴɹɜɥɟɧɧɵɟ ɜɧɟ ɤɥɚɫɫɚ ɢ ɜɧɟ ɬɟɥɚ ɮɭɧɤɰɢɢ ɫ
ɨɩɢɫɚɬɟɥɟɦ static, ɢɦɟɸɬ ɨɛɥɚɫɬɶ ɞɟɣɫɬɜɢɹ, ɨɝɪɚɧɢɱɟɧɧɭɸ ɮɚɣɥɨɦ, ɜ ɤɨ-
ɬɨɪɨɦ ɨɧɢ ɨɛɴɹɜɥɟɧɵ.
     ɉɟɪɟɦɟɧɧɵɟ, ɨɛɴɹɜɥɟɧɧɵɟ ɤɚɤ static ɜɧɭɬɪɢ ɮɭɧɤɰɢɢ, ɜɢɞɢɦɵ ɬɨɥɶ-
ɤɨ ɜɧɭɬɪɢ ɷɬɨɣ ɮɭɧɤɰɢɢ, ɧɨ ɫɨɯɪɚɧɹɸɬ ɫɜɨɢ ɡɧɚɱɟɧɢɹ ɩɨɫɥɟ ɜɵɯɨɞɚ ɢɡ
ɮɭɧɤɰɢɢ ɢ ɢɧɢɰɢɚɥɢɡɢɪɭɸɬɫɹ ɬɨɥɶɤɨ ɩɪɢ ɩɟɪɜɨɦ ɨɛɪɚɳɟɧɢɢ ɤ ɮɭɧɤɰɢɢ.
     Ʉɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ ɬɚɤɠɟ ɦɨɝɭɬ ɨɛɴɹɜɥɹɬɶɫɹ ɫ ɨɩɢɫɚɬɟɥɟɦ static,
ɬɚɤɢɟ ɤɨɦɩɨɧɟɧɬɵ - ɞɚɧɧɵɟ ɹɜɥɹɸɬɫɹ ɨɛɳɢɦɢ ɞɥɹ ɜɫɟɯ ɷɤɡɟɦɩɥɹɪɨɜ ɨɛɴɟɤ-
ɬɨɜ ɷɬɨɝɨ ɤɥɚɫɫɚ ɢ ɪɚɡɦɟɳɚɸɬɫɹ ɜ ɩɚɦɹɬɢ ɨɬɞɟɥɶɧɨ ɨɬ ɞɚɧɧɵɯ ɨɛɴɟɤɬɨɜ
ɤɥɚɫɫɚ. Ⱦɨɫɬɭɩ ɤ static-ɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ ɜɨɡɦɨɠɟɧ ɩɨ ɢɦɟɧɢ, ɭɬɨɱɧɟɧ-
ɧɨɦɭ ɢɦɟɧɟɦ ɤɥɚɫɫɚ (ɢɦɟɧɟɦ ɬɢɩɚ) ɢɥɢ ɢɦɟɧɟɦ ɨɛɴɟɤɬɚ ɷɬɨɝɨ ɤɥɚɫɫɚ, ɩɪɢ-
ɱɟɦ ɤ static-ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ ɦɨɠɧɨ ɨɛɪɚɳɚɬɶɫɹ ɞɨ ɫɨɡɞɚɧɢɹ ɷɤɡɟɦɩ-
ɥɹɪɨɜ ɨɛɴɟɤɬɨɜ ɷɬɨɝɨ ɤɥɚɫɫɚ. ɋɬɚɬɢɱɟɫɤɨɟ ɞɚɧɧɨɟ-ɱɥɟɧ ɤɥɚɫɫɚ ɞɨɥɠɧɨ ɛɵɬɶ
ɨɛɹɡɚɬɟɥɶɧɨ ɢɧɢɰɢɚɥɢɡɢɪɨɜɚɧɨ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ:
     class TBase        //ɛɚɡɨɜɵɣ ɤɥɚɫɫ ɞɥɹ ɦɚɫɫɢɜɨɜ ɜɫɟɯ ɬɢɩɨɜ
        {
        static int nw;
        int size,                            // ɪɚɡɦɟɪ ɷɥɟɦɟɧɬɚ
        count,                       // ɬɟɤɭɳɟɟ ɱɢɫɥɨ ɷɥɟɦɟɧɬɨɜ
        maxCount,                   // ɪɚɡɦɟɪ ɜɵɞɟɥɟɧɧɨɣ ɩɚɦɹɬɢ
        delta;                              //ɩɪɢɪɚɳɟɧɢɟ ɩɚɦɹɬɢ
        /* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ TBase */
        }
     int TBase::nw=1;   /* ɂɧɢɰɢɚɥɢɡɚɰɢɹ ɫɬɚɬɢɱɟɫɤɨɣ ɤɨɦɩɨɧɟɧɬɵ
                           ɤɥɚɫɫɚ */




                                  53