Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Progi / lesson 1 / Лекция / lec1.doc
Скачиваний:
36
Добавлен:
28.03.2015
Размер:
88.58 Кб
Скачать

Int main(int argc, char* argv[])

{

int m;

Record a;

a.min=5; // правильно min – public

a.sec=10; // неправильно sec – private

m=a.Numbersec(); // правильно Numbersec – public

m=a.Roundmin(); // не правильно Roundmin() - private

}

Мнемоническое правило: идентификаторы private могут появиться только внутри методов класса, как publc так и private. Идентификаторы public где угодно.

Различие между class и struct

В struct по умолчанию поля и методы public, в class – private

пример: работает min,sec public

struct Record

{

int min;

int sec;

};

Int main(int argc, char* argv[])

{

Record a; // переменная a типа Record

a.min=4;

a.sec=26;

return 0;

}

пример не работает min,sec - private

class Record

{

int min;

int sec;

};

Int main(int argc, char* argv[])

{

Record a; // переменная a типа Record

a.min=4; // здесь ошибка

a.sec=26; // здесь ошибка

return 0;

}

[C++ Error] Unit1.cpp(17): E2247 'Record::min' is not accessible (min недостуна)

Вывод : используем class и сразу пишем public: потом private:

5) Стиль C++ основные поля объявляются private, доступ к ним через public методы

пример для Record

class Record

{

public:

int Numbersec(); // количество секунд

void Put(int m,int s); // задание значений полей

int Getmin(); // число минут

int Getsec(); // число секунд

private:

int min;

int sec;

};

void Record::Put(int m,int s)

{

min=m;

sec=s;

}

int Record::Getmin()

{

return min;

}

int Record::Getsec()

{

return sec;

}

int Record::Numbersec()

{

return min*60+sec;

}

Int main(int argc, char* argv[])

{

int m,s,k;

Record a;

a.Put(5,36); // min=5 sec=36

k=a.Numbersec();

m=a.Getmin(); // m=5

s=a.Getsec(); // s=36

printf(“%d %d %d”, k,m,s);

}

6) Аргументами методов могут быть объекты своего или других классов, результатом тоже может быть объект некоторого класса.

В классе Record определим метод, вычисляющий среднее время спортсмена по двум попыткам. Аргументами метода Srednee будут два объекта Record, результатом также объект класса Record.

class Record

{

public:

int Numbersec(); // количество секунд

void Put(int m,int s); // задание значений полей

int Getmin(); // число минут

int Getsec(); // число секунд

Record Srednee(Record a,Record b); // аргументы объекты Record и результат тоже.

private:

int min;

int sec;

};

void Record::Put(int m,int s)

{

min=m;

sec=s;

}

int Record::Getmin()

{

return min;

}

int Record::Getsec()

{

return sec;

}

int Record::Numbersec()

{

return min*60+sec;

}

Record Record::Srednee(Record a,Record b)

// Record Record:: первый Record– тип возврата, функция возвращает Record,

// второй Record:: - Srednee относится к классу Record

{

Record c; // локальная переменная типа Record

int k; // обычная целая

c.min=a.min+b.min;

k=a.sec+b.sec;

if(k>=60) // проверка переноса

{

c.min++;

k=k-60;

}

c.min=c.min/2;

c.sec=k/2;

return c; // функция возвращает объект класса Record

}

Соседние файлы в папке Лекция