Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Теория ООП в Си

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Nozar



Зарегистрирован: 26.10.2005
Сообщения: 2

СообщениеДобавлено: Ср Окт 26 2005 20:00    Заголовок сообщения: Теория ООП в Си Ответить с цитатой

Сразу замечу, что я полный нУб, живу в бубруйске и пью яд каждый день вместо чая... но это лирическое отступление.

Проблема: моя девушка восстанавливается в институт и ей надо доздать программирование за 2ой курс, а теория там ... вобщем щас сами увидите... Сам я не программер, так что сходу ответить не смогу, а поиски дали минимальные результаты. Нужно сдать 2 контрольных... есть все билеты.
Итак:
КР 1
Вар 1
1.В каких строчках кода допущены ошибки и почему?
int i=0;
static int k=i+1;
for(int counter1=0;counter1<3;counter1++){
int j;
j=int i=0;
for(int counter2=10;counter2>0;counter2--
k+=counter2;
}
for(int counter1=0;counter1<3;counter1++)
i++;
2. Назовите ограничения на битовые поля в структурах и объединениях.
3. Что такое область видимости переменной и операция разрешения области видимости?
4. Что говорят модификаторы const и volatile?
5. Назовите 3 правила, которых надо придерживатся при использовании встраеваемой функции.
6. Когда компилятором создаются временные переменные при вызове функций с аргументами, передаваемыми как ссылки? Что нужно помнить при возвращении из функции ссылки на переменную?
7. Приведите пример объявления функции по стандарту С в файле для компилятора С++.
8. Как объявить ссылку на динамическую память и как будет выглядеть использование оператора delete для этой переменной

Вар 2
1. Назовите основные принципы ООП. Приведите примеры.
2. Назовите 3 преимущества использования констант перед директивой #define.
3. Как записывается статическая переменная в структурах. В чем особенность использования статической переменной
4. Чем прототип функции в с++ отличается от прототипа функции в С?
5. Что такое ссылка? Что нужно сделать сразу при объявлении ссылки? Когда создание ссылки приводит к копированию объекта, на который будет ссылатся ссылка?
6. Что делает опреатор new? Что является результатом его работы?? Назовите отличия от функции языка Си malloc и calloc?
7. Какие правила и ограничения перегрузки операторов вы знаете?
8. Напишите шаблон функции swap.

Вар 3
1. Укажите неправильный комментарий, где компилятор выдаст ошибку:
а)// komm
b)/* komm*/
c)/* komm/* komm2*/komm*/
d)/* komm// komm2 - komm*/
e)// komm/* komm2*/komm
f)x=a//* delenie*/c;
g)x=a/ /* delenie*/c;
2. В чем разница между #define и const?
3. Укажите 2 способа доступа статическому элементу структуры
4. Какие ограничения существуют на объявления параметров функции по умолчанию? Где указываются значения по умолчанию? Какие вызовы допустимы для int fun(int i,double d=0.1, char * str = NULL)?
5. Напишите функцию swap для замены значений целых чисел с использованием ссылок (int). Приведите примеры её вызова
6. Что такое перегрузка функций? аким критерием руководствуется компилятор для выбора нужной функции. Что происходит, когда компилятор не находит соответсвующую функцию?
7. Чему равны значения переменных str и i?
str= new char[20]
i = new int
8. Напишите пример перегрузки оператора * для векторов.

Вар 4
1. Какие модификаторы, преобразующие тип констант существует в С++. Приведите примеры записи констант с модификаторами.
2. Какая есть альтернативная форма определения символических констант?
3. Какие есть в С++ форматы записи преобразования типов. Приведите примеры. Какие ограничения на запись преобразования типов существуют?
4. Замените макрос на вставляемую функцию AVERAGE( a,b)(((a)+(b))/2)
В чём могут быть отличия при вызове встраиваемой функции от использования директивы #Define?
5. В чём отличия при использовании ссылок в качестве аргументов функции от указателей?
6. Назовите ограничения для перегруженных функций
7. Что делает оператор delete? Укажите, где допущена ошибка и почему:
int v1,*v2,*v3,*v4,v[10];
v3=new int(5);
v4 = v;
delete v1;
delete v2;
delete v3;
delete v4;
delete v;
8. Напишите фрагмент программы вводящей с консоли переменные типов char,double,string и распечатывающий на консоль введенные значения построчно. Использовать тока cout и cin.


КР 2
Вар 1
1. Что такое абстрактные типы данных и почему они так называются?
2. Что характеризуют член-данные и член-функции класса.
3. Какие ключевые слова используются для определения класса? В чём отличие полученных классов?
4. Что такое локальный класс? Приведите пример.
5. Зависит ли область видимости членов класса от точки их объявления? Приведите пример.
6. В чём заключается основная функция конструкторов? Какую еще важную информацию могут выполнять конструкторы?
7. Какие классы памяти вы знаете? В чём различия?
8. О чём говорит объявление объкта с ключевым словом const?
9. Как член-функция разбирается, с данными какого объекта ей надо работать?
10. int var=512;
int func(char s*){
int var=100;
cout <<ver<<"\n"
class Local {
public: void print(){cout<<var<<"\n";}
};
Local l.print();
}
Ято распечатает функция func?
11. Что такое вложенные классы?
12. Какие спецификотры доступа вы знаете? Как меняются эти спецификаторы при наследовании?
13. Что такле виртуальные классы? Зачем они нужны? Покажите на примере строение объекта при обычном и виртуальном наследовании.
14. Как выглядит виртуальный деструктор? В чём смысл создания виртуальных деструкторов?

Вар 2
1. Что такое класс? Чем он отличается от структуры в языке Си? Привидите пример объявления класса.
2. В чём отличие в уровнях доступа private,protected и public?
3. В каких секциях рекомендуется объявлять член-данные и член-функции?Какие это даёт преимущества? какой становится функция класса, когда её тело приводится в описание класса?
4. Как осуществляется доступ к открытым членам объекта?
5. Как явно указать область видимости переменной? Приведите пример.
6. Что делает деструктор и как он записывается? Привидите пример.
7. Какие члены называют статическими? Как осуществляется доступ к статическому члену класса? Привидите пример
8. Что означает термины "опасные" и "безопасные" член-функции?
9. Привидите пример указателя на функцию, проинициализируйте его некой функцией-членом.
10. Привидите примеры указателей на static член-данное и static член функцию.
11. Кто может быть другом класса?
12. Что такое наследование? Какие виды наследования вы знаете?
13. Что такое полиморфизм, приведите примеры.
14. Какой класс называется абстактным? Какие ограничения накладываются на использование абстрактного класса?

Вар 3
1. Что такое членны класса? Привидите примеры
2. Как можно управлять доступом к членас класса? Какие уровни вы знаете?
3. Как показывается какому классу принадлежит член функция, если её тело приводится вне описания класса? Приведите пример.
4. Какие области видимости поддерживаются в с++. В чём различие между ними
5. Чем отличается член функция от обычных функций?
6. Что значит статическое и динамическое выдиление памяти?
7. Какие правила нужно соблюдать при написании конструкторов и деструкторов?
8. Чем статическое член-данное класса отличается от обычной глобальной переменной? Где должно инициализироватся статическое член-данное?
9. Можно ли объявить у класса две следующие функции? Почему?
bool isFull() const;
bool isFool();
10. Чему должен соответствовать указатель на член-функцию присваемой функции при инициализации?
11. Что такое дружественные функции? Как они записываются? Приведите пример
12. Как осуществляется доступ к переменным и функциям базового класса? Какой порядок инициализации при наследовании
13. Что такое виртуальная функция? Какие ограничения накладываются на объявление виртуальной функции?
14. Когда вызов виртуальной функции не является виртуальным?


Заранее огромное спасибо всем кто попытается помоч

ЗЫ: Вы не думайте, что я свалил всё на вас а сам жду ответов, у мну тоже в браузере щас 15 окон с различными учебниками и прочим
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kashtan



Зарегистрирован: 28.10.2005
Сообщения: 3
Откуда: Санкт-Петербург

СообщениеДобавлено: Пт Окт 28 2005 16:22    Заголовок сообщения: Ответить с цитатой

Итак... Возьми книгу по программированию на С++, не пособие и маленькую книжечку, а что-нть типа СтрауструпаTwisted Evil или С. Праты (1000+ стр.) - поможет тебе ответить на теоритические вопросы... а чтобы проверить код, просто набери его и попробуй откомпилировать... компилятор укажет на ошибки... Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
3aebc9_Huk_podbiat'



Зарегистрирован: 13.02.2006
Сообщения: 3

СообщениеДобавлено: Пн Фев 13 2006 05:15    Заголовок сообщения: Ответить с цитатой

Теория ООП в Си!

держи. тока там не на все есть ответы! на че смог на то ответил.
КР 1
Вар 1
1.В каких строчках кода допущены ошибки и почему?
int i=0;
static int k=i+1;
for(int counter1=0;counter1<3;counter1++){
int j;
j=int i=0;
for(int counter2=10;counter2>0;counter2--
k+=counter2;
}
for(int counter1=0;counter1<3;counter1++)
i++;
*****************(ответ)**********************
j=int i=0; //ошибка
for(int counter2=10;counter2>0;counter2--) //ошибка
//ошибка j не используется
********************************************

2. Назовите ограничения на битовые поля в структурах и объединениях.
*********************
Объединения, так же как и структуры, могут содержать битовые поля Однако все эти битовые поля размещаются с начала объединения.
****************************
3. Что такое область видимости переменной и операция разрешения области видимости?
*****************(ответ)**********************
область видимости переменной это обоасть где действует данная переменная. область видимости ограничивается фигурными скобками
пример: #include <iostream.h>
#include <stdio.h>

int main (void) {
for(int i=0; i<100; ++i ) {
int x= 42;
if (x<i) {
double x= 3.14;
cout << x; //выведит 3.14
}
cout << x; // выведит 42
}
cout << x; //ошибка в текущей области видимости X не оъявлен.
}

операция разрешения области видимости это знак : : например d.base::b = 2;
********************************************
4. Что говорят модификаторы const и volatile?
*****************(ответ)**********************
Модификатор const предотвращает любые присваивания данному объекту, а также прочие побочные эффекты, такие как инкремент или декремент объекта.
Модификатор volatile указывает, что данный объект может быть модифицирован не только вами, но также и извне вашей программы, например, подпрограммой
прерывания или портом ввода/вывода. Объявление объекта volatile предупреждает компилятор, что тот не должен делать допущений относительно значения объекта во время
расчета содержащих его выражений, поскольку его значение (теоретически) может в любой момент измениться.
********************************************
5. Назовите 3 правила, которых надо придерживатся при использовании встраеваемой функции.
*****************(ответ)**********************
1)встраиваемая функция должна быть определена в файле где она используется, непосредсвенно перед ее использованием
2)встраивамую функцию, в отличии от прочих, можно определить в нескольких исходных файлах
3)все определения должны быть идентичны.
********************************************
6. Когда компилятором создаются временные переменные при вызове функций с аргументами, передаваемыми как ссылки? Что нужно помнить при возвращении из функции ссылки на переменную?
7. Приведите пример объявления функции по стандарту С в файле для компилятора С++.
8. Как объявить ссылку на динамическую память и как будет выглядеть использование оператора delete для этой переменной
*****************(ответ)**********************

********************************************




Вар 2
1. Назовите основные принципы ООП. Приведите примеры.
*****************(ответ)**********************
Объектно-ориентированное программирование основано на «трех китах» - трех важнейших принципах, придающих объектам новые свойства.
Этими принципами являются инкапсуляция, наследование и полиморфизм.
1)Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в
объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются.
2)Наследование есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.
3)Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами.
********************************************
2. Назовите 3 преимущества использования констант перед директивой #define.
*****************(ответ)**********************
в дебаггере консты удобнее, имеется тип, возможны глюки из-за использования дефайнов
(например #define A 1+1 ....... i=A++; // получится i = 1+1++)
********************************************
3. Как записывается статическая переменная в структурах. В чем особенность использования статической переменной
4. Чем прототип функции в с++ отличается от прототипа функции в С?
5. Что такое ссылка? Что нужно сделать сразу при объявлении ссылки? Когда создание ссылки приводит к копированию объекта, на который будет ссылатся ссылка?
*****************(ответ)**********************
ссылка это синоним объекта или функции. ссылка объявляется иакже как и указатель тока вместо * ставится &
при объявлении ссылки ее надо сразу инициалезировать.
*********************************************
6. Что делает опреатор new? Что является результатом его работы?? Назовите отличия от функции языка Си malloc и calloc?
*****************(ответ)**********************
оператор new выделяет память под объект
При использовании new, в отличие от malloc, не нужно приводить указатель от типа void* к
нужному типу: оператор new возвращает указатель на тип, записанный после слова new. Сравните два эквивалентных фрагмента на Си и C++:
C | C++
double *p; | double *p;
p = (double*) mallos(sizeof(double)); | p = new double;
ище при использование new можно сразу инициализировать объект double *p = new double(1.5);
********************************************

7. Какие правила и ограничения перегрузки операторов вы знаете?

8. Напишите шаблон функции swap.
*****************(ответ)**********************
template<class T> Swap(T& a, T& b) {T c; c=a; return T(a=b, b=c);}
********************************************

Вар 3
1. Укажите неправильный комментарий, где компилятор выдаст ошибку:
а)// komm
b)/* komm*/
c)/* komm/* komm2*/komm*/
d)/* komm// komm2 - komm*/
e)// komm/* komm2*/komm
f)x=a//* delenie*/c;
g)x=a/ /* delenie*/c;
*****************(ответ)**********************
c)/* komm/* komm2*/komm*/ (неправильно)
f)x=a//* delenie*/c; (неправильно)
********************************************
2. В чем разница между #define и const?
*****************(ответ)**********************
1)#define обрабатывается препроцессором а const компилятором
2)#define это строка а Const выражение
3)const имеет тип
(пример)
a)#define max 20+30
b)const int max=20+30;
.....................
i=max++;
a) i==20+30++;
b) i==50++;
*********************************************
3. Укажите 2 способа доступа к статическому элементу структуры
*****************(ответ)**********************
struct demo {
static void func() {....};
}
static int local_func()

********************************************

4. Какие ограничения существуют на объявления параметров функции по умолчанию? Где указываются значения по умолчанию? Какие вызовы допустимы для int fun(int i,double d=0.1, char * str = NULL)?
*****************(ответ)**********************
Параметру может быть сопаставлено значение по умолчанию.
значение по умолчанию может быть указано для параметров стаяшие в списке последними!!! (например int func(int x, int y=3)-правильно int func(int x, int y=2, int k, int n=4);-неправильно!)
значениЕМ по умолчанию может быть любое выражение, если в нем используется запятая то выражение должно взято в круглые скобочки. int f(int n, int m); char func(char str, int k=(f(int n, int m)));
при вызове функции, параметры, для кторых указано значение по умолчанию, могут быть опущены int func(int k,int b=4) {........} вызов func(15);
********************************************
5. Напишите функцию swap для замены значений целых чисел с использованием ссылок (int). Приведите примеры её вызова
*****************(ответ)**********************
int swap(int& n,int& m) { int c; c=n; n=m; m=c; return 0; } вызов swap(a,b);
*********************************************
6. Что такое перегрузка функций? каким критерием руководствуется компилятор для выбора нужной функции. Что происходит, когда компилятор не находит соответсвующую функцию?
*****************(ответ)**********************
перегрузка функции это конда в программе используются несколько функций с одним и темже именем
например int func(int); double func(double); говорят что функция func перегружена.
при выборе нужной функции компелятор проходит нескольо этапов.
1-ое создает список функций кандидатов тоесть список функций с одинаковым именем
2-ое далее он смотрит на числор параметров (дапустим func(int k; int b)-2параметра func(char str);-один параметр) и очищает список от неподходящих функции
3-ее потом компилятор смотрит на тип параметров пример int k=int func(int); int k=char func(char) однозначно чар неподходит
4-ее если несколько функци подходит то компилятор выдаст ошибку неодносзначности. (например int k=func(int) int k=func(double) int k=func(float) если нет ниодной подходящей функции то компелятор выдас ошибку

********************************************
7. Чему равны значения переменных str и i?
str= new char[20]
i = new int
*****************(ответ)**********************
Указатель i будет указывать на переменную типа int, а указатель str на массив из 20 элементов типа char.
********************************************
8. Напишите пример перегрузки оператора * для векторов.
*****************(ответ)**********************
#include <stdio.h>
#include <iostream.h>
#include <conio.h>

class vector {
public:
int kordx;
int kordy;
};
vector operator * (vector a, vector b) {
vector c;
c.kordx=a.kordx*b.kordx;
c.kordy=a.kordy*b.kordy;
return (c);
}


int main(void){

vector a1;
vector b2;
vector c3;
clrscr();
a1.kordx=1;
a1.kordy=1;

b2.kordx=2;
b2.kordy=2;

c3.kordx=0;
c3.kordy=0;

cout << "vector A1("<< a1.kordx <<":"<< a1.kordy << ")\n";
cout << "vector B2("<<b2.kordx <<":"<< b2.kordy << ")\n";
cout << "vector C3("<<c3.kordx <<":" << c3.kordy <<")\n";
c3=a1*b2;
cout << "vector C3("<<c3.kordx <<":" << c3.kordy <<")\n";

return 0;
}
*************************************************
Вар 4
1. Какие модификаторы, преобразующие тип констант существует в С++. Приведите примеры записи констант с модификаторами.
2. Какая есть альтернативная форма определения символических констант?
*****************(ответ)**********************
#define имя текст_подстановки
добавив служебное слово const в определении,
можно связать с именем любое значение произвольного типа;
*******************************************
3. Какие есть в С++ форматы записи преобразования типов. Приведите примеры. Какие ограничения на запись преобразования типов существуют?
4. Замените макрос на вставляемую функцию AVERAGE( a,b)(((a)+(b))/2)
В чём могут быть отличия при вызове встраиваемой функции от использования директивы #Define?
*****************(ответ)**********************
inline float AVERAGE(int a, int b){return (a+b)/2;}
********************************************
5. В чём отличия при использовании ссылок в качестве аргументов функции от указателей?
*****************(ответ)**********************
void myfunc(int *x)
{
*x = 10;
}
int main()
{
int a = 0;
myfunc(&a);
// Теперь а = 10 !!!
return 0;
}

2) Передача параметра-ссылки:
void myfunc(int &x)
{
x = 10;
}
int main()
{
int a = 0;
myfunc(a);
// Теперь а = 10 !!!
return 0;
}
Теперь внутри функции уже нет необходимости обращаться к значению передаваемого параметра с помощью оператора * (*x = 10;). Нужно просто писать x = 10;
Также когда из функции main вызываем функцию myfunc уже не надо получать адрес переменной с помощью оператора &.
Компилятор сам все сделает за вас и автоматически передаст адрес переменной в функцию myfunc.
*******************************************
6. Назовите ограничения для перегруженных функций
7. Что делает оператор delete? Укажите, где допущена ошибка и почему:
int v1,*v2,*v3,*v4,v[10];
v3=new int(5);
v4 = v;
delete v1;
delete v2;
delete v3;
delete v4;
delete v;
*****************(ответ)**********************
delete v3; //ошибка v - массив delete[ ] array
********************************************
8. Напишите фрагмент программы вводящей с консоли переменные типов char,double,string и распечатывающий на консоль введенные значения построчно. Использовать тока cout и cin.
*****************(ответ)**********************
cout <<"vvedite char -> "; cin >> ch;
cout <<"nvvedite double -> "; cin >> db;
cout <<"vvedite string -> "; cin >> str;
********************************************


КР 2
Вар 1
1. Что такое абстрактные типы данных и почему они так называются?
*****************(ответ)**********************
абстрактные классы это классы содержащие хотябы одну чисто виртуальную функцию
*******************************************
2. Что характеризуют член-данные и член-функции класса.
3. Какие ключевые слова используются для определения класса? В чём отличие полученных классов?
*****************(ответ)**********************
определение класса начинается с ключевого слова struct, class, union. разнича между class и struct заключается в уровне доступа по умолчанию
union походит на struct все его члены лежат в одной области памяти так что обращаться можно тока к одному члену за раз.
пример.
struct point {
double x,y;
};
class point {
double x,y;
int k;
};
также при определние класса используются модификаторы доступа (
public(к открытотому public члену можно обращаться откуда угодно),
protectd(к защещенному члену protecded можно обращаться только из самого класса, дружественных функций и класоов патомков),
private(только из самого класса и его друзей))
********************************************
4. Что такое локальный класс? Приведите пример.
*****************(ответ)**********************
Класс может быть определен внутри функции; такой класс называется локальным (local) классом.
void f() {
static int s;
int x;
extern int g();

struct local {
int g() { return x; } // ошибка, auto x
int h() { return s; } // OK
int k() { return :Mad; } // OK
int l() { return g(); } // OK
};
********************************************
5. Зависит ли область видимости членов класса от точки их объявления? Приведите пример.

6. В чём заключается основная функция конструкторов? Какую еще важную информацию могут выполнять конструкторы?
7. Какие классы памяти вы знаете? В чём различия?
8. О чём говорит объявление объкта с ключевым словом const?
*****************(ответ)**********************
теперь ему нельзя будет присвойть значение const int k=6; k=9;//ошибка k - константа
********************************************
9. Как член-функция разбирается, с данными какого объекта ей надо работать?
10. int var=512;
int func(char s*){
int var=100;
cout <<ver<<"\n"
class Local {
public: void print(){cout<<var<<"\n";}
};
Local l.print();
}
Что распечатает функция func?
****************(ответ)************************
100
512
********************************************
11. Что такое вложенные классы?
12. Какие спецификотры доступа вы знаете? Как меняются эти спецификаторы при наследовании?
13. Что такое виртуальные классы? Зачем они нужны? Покажите на примере строение объекта при обычном и виртуальном наследовании.
14. Как выглядит виртуальный деструктор? В чём смысл создания виртуальных деструкторов?

Вар 2
1. Что такое класс? Чем он отличается от структуры в языке Си? Привидите пример объявления класса.
2. В чём отличие в уровнях доступа private,protected и public?
****************(ответ)************************
public(к открытотому public члену можно обращаться откуда угодно),
protectd(к защещенному члену protecded можно обращаться только из самого класса, дружественных функций и класоов патомков),
private(только из самого класса и его друзей))
********************************************
3. В каких секциях рекомендуется объявлять член-данные и член-функции?Какие это даёт преимущества? какой становится функция класса, когда её тело приводится в описание класса?
4. Как осуществляется доступ к открытым членам объекта?
****************(ответ)************************
через .
*********************************************
5. Как явно указать область видимости переменной? Приведите пример.
6. Что делает деструктор и как он записывается? Привидите пример.
****************(ответ)************************
~point() {..} //диструктор
диструктор служит для очистки объектов при их уничтожении
*********************************************
7. Какие члены называют статическими? Как осуществляется доступ к статическому члену класса? Привидите пример
****************(ответ)************************
static int func(){.............}
static int k;

доступ - имя класса::член
*********************************************
8. Что означает термины "опасные" и "безопасные" член-функции?
9. Привидите пример указателя на функцию, проинициализируйте его некой функцией-членом.
****************(ответ)************************
struct simple {
int data;
int func(int);
}
int (simple::*fp)(int);
fp=&simple::func; simple b; b.*fp(42)
*********************************************
10. Привидите примеры указателей на static член-данное и static член функцию.
****************(ответ)************************
struct simple {
static int data;
static int func(int);
}

int *f; f=data;
int (*fp)(int); fp=func;
*********************************************
11. Кто может быть другом класса?
****************(ответ)************************
функция , класс или шаблон
*********************************************
12. Что такое наследование? Какие виды наследования вы знаете?
****************(ответ)************************
Наследование есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять
объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.
*********************************************
13. Что такое полиморфизм, приведите примеры.
****************(ответ)************************
Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами.
*********************************************
14. Какой класс называется абстактным? Какие ограничения накладываются на использование абстрактного класса?

Вар 3
1. Что такое членны класса? Привидите примеры
****************(ответ)************************
членом класса может быть функция (функция-член),другой класс, структура
class nameclass {
int func(){....} //член класса
int x;
}
*********************************************
2. Как можно управлять доступом к членаv класса? Какие уровни вы знаете?
****************(ответ)************************
у класса есть три раздела public, private, protected с помощью них можно управлять доступом к члену
public(к открытотому public члену можно обращаться откуда угодно),
protectd(к защещенному члену protecded можно обращаться только из самого класса, дружественных функций и класоов патомков),
private(только из самого класса и его друзей))
*********************************************
3. Как показывается какому классу принадлежит член функция, если её тело приводится вне описания класса? Приведите пример.
****************(ответ)************************
class base {
...
func(int x, int y);
}

base::func(int x, int y) {..............}
*********************************************
4. Какие области видимости поддерживаются в с++. В чём различие между ними

5. Чем отличается член функция от обычных функций?
****************(ответ)************************
член функция- отвечает за поведение класса. член функция может быть встраевоемой и нет, статической и виртуальной(не одновременно) функчия которая
находится в классе автоматически делается встраевоемой.
*********************************************
6. Что значит статическое и динамическое выдиление памяти?
****************(ответ)************************
1) char foo[256]; // Статическое выделение памяти
2) char foo = new char[256]; // Динамическое выделение памяти
В пеpвом случае память для буффеpа выделяется на этапе компиляции, во втоpом
выделение пpоисходит во вpемя pаботы пpогpаммы.
*********************************************
7. Какие правила нужно соблюдать при написании конструкторов и деструкторов?
****************(ответ)************************
1)имя конструктора должно совподать с именем класса
2)у конструкторов нет возвращаемого значения => неуказывается его тип
3) конструктор не может быть виртуальным или статическим
class point {
public:
int x;
int y;
point(int x, int y){...} //конструктор
}
диструктор неимет ни возврашаемого значения, ни типа,ни аргументов имя диструктора совпадает с именем класса но с ~ диструктор может быть виртуальным или
встраевымым но не может быть статическим.
class point {
public:
int x;
int y;
point(int x, int y){...} //конструктор
~point() {..} //диструктор
}

*********************************************
8. Чем статическое член-данное класса отличается от обычной глобальной переменной? Где должно инициализироватся статическое член-данное?
9. Можно ли объявить у класса две следующие функции? Почему?
bool isFull() const;
bool isFool();
****************(ответ)************************
можно почему непомню
*********************************************
10. Чему должен соответствовать указатель на член-функцию присваемой функции при инициализации?

11. Что такое дружественные функции? Как они записываются? Приведите пример
****************(ответ)************************
дружественная функция имеет полный доступ к закрытым разделам класса.
friend int func(.......){.....}
прмер class list {
friend bool operator==(const lict& a, const list& b);
...
..... }
*********************************************
12. Как осуществляется доступ к переменным и функциям базового класса? Какой порядок инициализации при наследовании
****************(ответ)************************
class vextor {
public:
int x;
int y;
}
vector a;
a.x=9
a.y=0;
*********************************************
13. Что такое виртуальная функция? Какие ограничения накладываются на объявление виртуальной функции?
****************(ответ)************************
#include <iostream.h>
class Base
public:
virtual void fn() {
cout << "Мы в классе Base\n";}
} ;

class Subclass : public Base {
public:
virtual void fn() {
cout << "Мы в классе Subclass\n";}
};
void test(Bases b) {
b.fn (); //Используется позднее связывание
}
int main (int argcs, char* pArgs[] )
{
Base be;
Subclass sc;
cout << "Вызываем функцию test(be)\n";
test(be);
cout << "Вызываем функцию test(sc)\n";
test(sc);
return 0;
}
Ключевое слово v i r t u a l сообщает C++ о том, что f n () является полиморфной функцией-членом. Это так называемое виртуальное объявление f n (} означает, что ее
вызовы будут связаны позже, если есть хоть какие-то сомнения по поводу типа аргу- мента, с которым будет вызываться функция f n () на этапе выполнения.
В приведенном фрагменте fr, () вызывается через промежуточную функцию t e s t (). Когда функции t e s t () передается объект базового класса, b.fnO вызывает
функцию Base: : f n (). Но когда функции test () передается объект класса Subclass, этот же вызов обращается к функции Subclass : : £п () .
Запуск программы приведет к выводу на экран таких строк:
Вызываем функцию test(be)
Мы в классе Base
Вызываем функцию test(sc)
Мы в классе Subclass
*********************************************
14. Когда вызов виртуальной функции не является виртуальным?
****************(ответ)************************
Если функция-член объявлена в подклассе с другими аргумента-
ми, она не будет переопределена как полиморфная, независимо от того, объявле-
на она виртуальной или нет
*********************************************
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
3aebc9_Huk_podbiat'



Зарегистрирован: 13.02.2006
Сообщения: 3

СообщениеДобавлено: Пн Фев 13 2006 05:32    Заголовок сообщения: Ответить с цитатой

Теория ООП в Си!

держи. тока там не на все есть ответы! на че смог на то ответил.
КР 1
Вар 1
1.В каких строчках кода допущены ошибки и почему?
int i=0;
static int k=i+1;
for(int counter1=0;counter1<3;counter1++){
int j;
j=int i=0;
for(int counter2=10;counter2>0;counter2--
k+=counter2;
}
for(int counter1=0;counter1<3;counter1++)
i++;
*****************(ответ)**********************
j=int i=0; //ошибка
for(int counter2=10;counter2>0;counter2--) //ошибка
//ошибка j не используется
********************************************

2. Назовите ограничения на битовые поля в структурах и объединениях.
********(ответ)*************
Объединения, так же как и структуры, могут содержать битовые поля Однако все эти битовые поля размещаются с начала объединения.
****************************
3. Что такое область видимости переменной и операция разрешения области видимости?
*****************(ответ)**********************
область видимости переменной это обоасть где действует данная переменная. область видимости ограничивается фигурными скобками
пример: #include <iostream.h>
#include <stdio.h>

int main (void) {
for(int i=0; i<100; ++i ) {
int x= 42;
if (x<i) {
double x= 3.14;
cout << x; //выведит 3.14
}
cout << x; // выведит 42
}
cout << x; //ошибка в текущей области видимости X не оъявлен.
}

операция разрешения области видимости это знак : : например d.base::b = 2;
********************************************
4. Что говорят модификаторы const и volatile?
*****************(ответ)**********************
Модификатор const предотвращает любые присваивания данному объекту, а также прочие побочные эффекты, такие как инкремент или декремент объекта.
Модификатор volatile указывает, что данный объект может быть модифицирован не только вами, но также и извне вашей программы, например, подпрограммой
прерывания или портом ввода/вывода. Объявление объекта volatile предупреждает компилятор, что тот не должен делать допущений относительно значения объекта во время
расчета содержащих его выражений, поскольку его значение (теоретически) может в любой момент измениться.
********************************************
5. Назовите 3 правила, которых надо придерживатся при использовании встраеваемой функции.
*****************(ответ)**********************
1)встраиваемая функция должна быть определена в файле где она используется, непосредсвенно перед ее использованием
2)встраивамую функцию, в отличии от прочих, можно определить в нескольких исходных файлах
3)все определения должны быть идентичны.
********************************************
6. Когда компилятором создаются временные переменные при вызове функций с аргументами, передаваемыми как ссылки? Что нужно помнить при возвращении из функции ссылки на переменную?
7. Приведите пример объявления функции по стандарту С в файле для компилятора С++.
8. Как объявить ссылку на динамическую память и как будет выглядеть использование оператора delete для этой переменной



Вар 2
1. Назовите основные принципы ООП. Приведите примеры.
*****************(ответ)**********************
Объектно-ориентированное программирование основано на «трех китах» - трех важнейших принципах, придающих объектам новые свойства.
Этими принципами являются инкапсуляция, наследование и полиморфизм.
1)Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в
объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются.
2)Наследование есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.
3)Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами.
********************************************
2. Назовите 3 преимущества использования констант перед директивой #define.
*****************(ответ)**********************
в дебаггере консты удобнее, имеется тип, возможны глюки из-за использования дефайнов
(например #define A 1+1 ....... i=A++; // получится i = 1+1++)
********************************************
3. Как записывается статическая переменная в структурах. В чем особенность использования статической переменной
4. Чем прототип функции в с++ отличается от прототипа функции в С?
5. Что такое ссылка? Что нужно сделать сразу при объявлении ссылки? Когда создание ссылки приводит к копированию объекта, на который будет ссылатся ссылка?
*****************(ответ)**********************
ссылка объявляется иакже как и указатель тока вместо * ставится &
при объявлении ссылки ее надо сразу инициалезировать.
*********************************************
6. Что делает опреатор new? Что является результатом его работы?? Назовите отличия от функции языка Си malloc и calloc?
*****************(ответ)**********************
оператор new выделяет память под объект
При использовании new, в отличие от malloc, не нужно приводить указатель от типа void* к
нужному типу: оператор new возвращает указатель на тип, записанный после слова new. Сравните два эквивалентных фрагмента на Си и C++:
C
double *p;
p = (double*) mallos(sizeof(double));

C++
double *p;
p = new double;

ище при использование new можно сразу инициализировать объект double *p = new double(1.5);
********************************************

7. Какие правила и ограничения перегрузки операторов вы знаете?

8. Напишите шаблон функции swap.
*****************(ответ)**********************
template<class T> Swap(T& a, T& b) {T c; c=a; return T(a=b, b=c);}
********************************************

Вар 3
1. Укажите неправильный комментарий, где компилятор выдаст ошибку:
а)// komm
b)/* komm*/
c)/* komm/* komm2*/komm*/
d)/* komm// komm2 - komm*/
e)// komm/* komm2*/komm
f)x=a//* delenie*/c;
g)x=a/ /* delenie*/c;
*****************(ответ)**********************
c)/* komm/* komm2*/komm*/ (неправильно)
f)x=a//* delenie*/c; (неправильно)
********************************************
2. В чем разница между #define и const?
*****************(ответ)**********************
1)#define обрабатывается препроцессором а const компилятором
2)#define это строка а Const выражение
3)const имеет тип
(пример)
a)#define max 20+30
b)const int max=20+30;
.....................
i=max++;
a) i==20+30++;
b) i==50++;
*********************************************
3. Укажите 2 способа доступа к статическому элементу структуры
*****************(ответ)**********************
struct demo {
static void func() {....};
}
static int local_func()

********************************************

4. Какие ограничения существуют на объявления параметров функции по умолчанию? Где указываются значения по умолчанию? Какие вызовы допустимы для int fun(int i,double d=0.1, char * str = NULL)?
*****************(ответ)**********************
Параметру может быть сопаставлено значение по умолчанию.
значение по умолчанию может быть указано для параметров стаяшие в списке последними!!! (например int func(int x, int y=3)-правильно int func(int x, int y=2, int k, int n=4);-неправильно!)
значениЕМ по умолчанию может быть любое выражение, если в нем используется запятая то выражение должно взято в круглые скобочки. int f(int n, int m); char func(char str, int k=(f(int n, int m)));
при вызове функции, параметры, для кторых указано значение по умолчанию, могут быть опущены int func(int k,int b=4) {........} вызов func(15);
********************************************
5. Напишите функцию swap для замены значений целых чисел с использованием ссылок (int). Приведите примеры её вызова
*****************(ответ)**********************
int swap(int& n,int& m) { int c; c=n; n=m; m=c; return 0; } вызов swap(a,b);
*********************************************
6. Что такое перегрузка функций? каким критерием руководствуется компилятор для выбора нужной функции. Что происходит, когда компилятор не находит соответсвующую функцию?
*****************(ответ)**********************
перегрузка функции это конда в программе используются несколько функций с одним и темже именем
например int func(int); double func(double); говорят что функция func перегружена.
при выборе нужной функции компелятор проходит нескольо этапов.
1-ое создает список функций кандидатов тоесть список функций с одинаковым именем
2-ое далее он смотрит на числор параметров (дапустим func(int k; int b)-2параметра func(char str);-один параметр) и очищает список от неподходящих функции
3-ее потом компилятор смотрит на тип параметров пример int k=int func(int); int k=char func(char) однозначно чар неподходит
4-ее если несколько функци подходит то компилятор выдаст ошибку неодносзначности. (например int k=func(int) int k=func(double) int k=func(float) если нет ниодной подходящей функции то компелятор выдас ошибку

********************************************
7. Чему равны значения переменных str и i?
str= new char[20]
i = new int
*****************(ответ)**********************
Указатель i будет указывать на переменную типа int, а указатель str на массив из 20 элементов типа char.
********************************************
8. Напишите пример перегрузки оператора * для векторов.
*****************(ответ)**********************
#include <stdio.h>
#include <iostream.h>
#include <conio.h>

class vector {
public:
int kordx;
int kordy;
};
vector operator * (vector a, vector b) {
vector c;
c.kordx=a.kordx*b.kordx;
c.kordy=a.kordy*b.kordy;
return (c);
}


int main(void){

vector a1;
vector b2;
vector c3;
clrscr();
a1.kordx=1;
a1.kordy=1;

b2.kordx=2;
b2.kordy=2;

c3.kordx=0;
c3.kordy=0;

cout << "vector A1("<< a1.kordx <<":"<< a1.kordy << ")\n";
cout << "vector B2("<<b2.kordx <<":"<< b2.kordy << ")\n";
cout << "vector C3("<<c3.kordx <<":" << c3.kordy <<")\n";
c3=a1*b2;
cout << "vector C3("<<c3.kordx <<":" << c3.kordy <<")\n";

return 0;
}
*************************************************
Вар 4
1. Какие модификаторы, преобразующие тип констант существует в С++. Приведите примеры записи констант с модификаторами.
2. Какая есть альтернативная форма определения символических констант?
*****************(ответ)**********************
#define имя текст_подстановки
добавив служебное слово const в определении,
можно связать с именем любое значение произвольного типа;
*******************************************
3. Какие есть в С++ форматы записи преобразования типов. Приведите примеры. Какие ограничения на запись преобразования типов существуют?
4. Замените макрос на вставляемую функцию AVERAGE( a,b)(((a)+(b))/2)
В чём могут быть отличия при вызове встраиваемой функции от использования директивы #Define?
*****************(ответ)**********************
inline float AVERAGE(int a, int b){return (a+b)/2;}
********************************************
5. В чём отличия при использовании ссылок в качестве аргументов функции от указателей?
*****************(ответ)**********************
void myfunc(int *x)
{
*x = 10;
}
int main()
{
int a = 0;
myfunc(&a);
// Теперь а = 10 !!!
return 0;
}

2) Передача параметра-ссылки:
void myfunc(int &x)
{
x = 10;
}
int main()
{
int a = 0;
myfunc(a);
// Теперь а = 10 !!!
return 0;
}
Теперь внутри функции уже нет необходимости обращаться к значению передаваемого параметра с помощью оператора * (*x = 10;). Нужно просто писать x = 10;
Также когда из функции main вызываем функцию myfunc уже не надо получать адрес переменной с помощью оператора &.
Компилятор сам все сделает за вас и автоматически передаст адрес переменной в функцию myfunc.
*******************************************
6. Назовите ограничения для перегруженных функций
7. Что делает оператор delete? Укажите, где допущена ошибка и почему:
int v1,*v2,*v3,*v4,v[10];
v3=new int(5);
v4 = v;
delete v1;
delete v2;
delete v3;
delete v4;
delete v;
*****************(ответ)**********************
delete v3; //ошибка v - массив delete[ ] array
********************************************
8. Напишите фрагмент программы вводящей с консоли переменные типов char,double,string и распечатывающий на консоль введенные значения построчно. Использовать тока cout и cin.
*****************(ответ)**********************
cout <<"vvedite char -> "; cin >> ch;
cout <<"nvvedite double -> "; cin >> db;
cout <<"vvedite string -> "; cin >> str;
********************************************


КР 2
Вар 1
1. Что такое абстрактные типы данных и почему они так называются?
*****************(ответ)**********************
абстрактные классы это классы содержащие хотябы одну чисто виртуальную функцию
*******************************************
2. Что характеризуют член-данные и член-функции класса.
3. Какие ключевые слова используются для определения класса? В чём отличие полученных классов?
*****************(ответ)**********************
определение класса начинается с ключевого слова struct, class, union. разнича между class и struct заключается в уровне доступа по умолчанию
union походит на struct все его члены лежат в одной области памяти так что обращаться можно тока к одному члену за раз.
пример.
struct point {
double x,y;
};
class point {
double x,y;
int k;
};
также при определние класса используются модификаторы доступа (
public(к открытотому public члену можно обращаться откуда угодно),
protectd(к защещенному члену protecded можно обращаться только из самого класса, дружественных функций и класоов патомков),
private(только из самого класса и его друзей))
********************************************
4. Что такое локальный класс? Приведите пример.
*****************(ответ)**********************
Класс может быть определен внутри функции; такой класс называется локальным (local) классом.
void f() {
static int s;
int x;
extern int g();

struct local {
int g() { return x; } // ошибка, auto x
int h() { return s; } // OK
int k() { return :Mad; } // OK
int l() { return g(); } // OK
};
********************************************
5. Зависит ли область видимости членов класса от точки их объявления? Приведите пример.

6. В чём заключается основная функция конструкторов? Какую еще важную информацию могут выполнять конструкторы?
7. Какие классы памяти вы знаете? В чём различия?
8. О чём говорит объявление объкта с ключевым словом const?
*****************(ответ)**********************
теперь ему нельзя будет присвойть значение const int k=6; k=9;//ошибка k - константа
********************************************
9. Как член-функция разбирается, с данными какого объекта ей надо работать?
10. int var=512;
int func(char s*){
int var=100;
cout <<ver<<"\n"
class Local {
public: void print(){cout<<var<<"\n";}
};
Local l.print();
}
Что распечатает функция func?
****************(ответ)************************
100
512
********************************************
11. Что такое вложенные классы?
12. Какие спецификотры доступа вы знаете? Как меняются эти спецификаторы при наследовании?
13. Что такое виртуальные классы? Зачем они нужны? Покажите на примере строение объекта при обычном и виртуальном наследовании.
14. Как выглядит виртуальный деструктор? В чём смысл создания виртуальных деструкторов?

Вар 2
1. Что такое класс? Чем он отличается от структуры в языке Си? Привидите пример объявления класса.
2. В чём отличие в уровнях доступа private,protected и public?
****************(ответ)************************
public(к открытотому public члену можно обращаться откуда угодно),
protectd(к защещенному члену protecded можно обращаться только из самого класса, дружественных функций и класоов патомков),
private(только из самого класса и его друзей))
********************************************
3. В каких секциях рекомендуется объявлять член-данные и член-функции?Какие это даёт преимущества? какой становится функция класса, когда её тело приводится в описание класса?
4. Как осуществляется доступ к открытым членам объекта?
****************(ответ)************************
через .
*********************************************
5. Как явно указать область видимости переменной? Приведите пример.
6. Что делает деструктор и как он записывается? Привидите пример.
****************(ответ)************************
~point() {..} //диструктор
диструктор служит для очистки объектов при их уничтожении
*********************************************
7. Какие члены называют статическими? Как осуществляется доступ к статическому члену класса? Привидите пример
****************(ответ)************************
static int func(){.............}
static int k;

доступ - имя класса::член
*********************************************
8. Что означает термины "опасные" и "безопасные" член-функции?
9. Привидите пример указателя на функцию, проинициализируйте его некой функцией-членом.
****************(ответ)************************
struct simple {
int data;
int func(int);
}
int (simple::*fp)(int);
fp=&simple::func; simple b; b.*fp(42)
*********************************************
10. Привидите примеры указателей на static член-данное и static член функцию.
****************(ответ)************************
struct simple {
static int data;
static int func(int);
}

int *f; f=data;
int (*fp)(int); fp=func;
*********************************************
11. Кто может быть другом класса?
****************(ответ)************************
функция , класс или шаблон
*********************************************
12. Что такое наследование? Какие виды наследования вы знаете?
****************(ответ)************************
Наследование есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять
объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.
*********************************************
13. Что такое полиморфизм, приведите примеры.
****************(ответ)************************
Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами.
*********************************************
14. Какой класс называется абстактным? Какие ограничения накладываются на использование абстрактного класса?

Вар 3
1. Что такое членны класса? Привидите примеры
****************(ответ)************************
членом класса может быть функция (функция-член),другой класс, структура
class nameclass {
int func(){....} //член класса
int x;
}
*********************************************
2. Как можно управлять доступом к членаv класса? Какие уровни вы знаете?
****************(ответ)************************
у класса есть три раздела public, private, protected с помощью них можно управлять доступом к члену
public(к открытотому public члену можно обращаться откуда угодно),
protectd(к защещенному члену protecded можно обращаться только из самого класса, дружественных функций и класоов патомков),
private(только из самого класса и его друзей))
*********************************************
3. Как показывается какому классу принадлежит член функция, если её тело приводится вне описания класса? Приведите пример.
****************(ответ)************************
class base {
...
func(int x, int y);
}

base::func(int x, int y) {..............}
*********************************************
4. Какие области видимости поддерживаются в с++. В чём различие между ними

5. Чем отличается член функция от обычных функций?
****************(ответ)************************
член функция- отвечает за поведение класса. член функция может быть встраевоемой и нет, статической и виртуальной(не одновременно) функчия которая
находится в классе автоматически делается встраевоемой.
*********************************************
6. Что значит статическое и динамическое выдиление памяти?
****************(ответ)************************
1) char foo[256]; // Статическое выделение памяти
2) char foo = new char[256]; // Динамическое выделение памяти
В пеpвом случае память для буффеpа выделяется на этапе компиляции, во втоpом
выделение пpоисходит во вpемя pаботы пpогpаммы.
*********************************************
7. Какие правила нужно соблюдать при написании конструкторов и деструкторов?
****************(ответ)************************
1)имя конструктора должно совподать с именем класса
2)у конструкторов нет возвращаемого значения => неуказывается его тип
3) конструктор не может быть виртуальным или статическим
class point {
public:
int x;
int y;
point(int x, int y){...} //конструктор
}
диструктор неимет ни возврашаемого значения, ни типа,ни аргументов имя диструктора совпадает с именем класса но с ~ диструктор может быть виртуальным или
встраевымым но не может быть статическим.
class point {
public:
int x;
int y;
point(int x, int y){...} //конструктор
~point() {..} //диструктор
}

*********************************************
8. Чем статическое член-данное класса отличается от обычной глобальной переменной? Где должно инициализироватся статическое член-данное?
9. Можно ли объявить у класса две следующие функции? Почему?
bool isFull() const;
bool isFool();
****************(ответ)************************
можно почему непомню
*********************************************
10. Чему должен соответствовать указатель на член-функцию присваемой функции при инициализации?

11. Что такое дружественные функции? Как они записываются? Приведите пример
****************(ответ)************************
дружественная функция имеет полный доступ к закрытым разделам класса.
friend int func(.......){.....}
прмер class list {
friend bool operator==(const lict& a, const list& b);
...
..... }
*********************************************
12. Как осуществляется доступ к переменным и функциям базового класса? Какой порядок инициализации при наследовании
****************(ответ)************************
class vextor {
public:
int x;
int y;
}
vector a;
a.x=9
a.y=0;
*********************************************
13. Что такое виртуальная функция? Какие ограничения накладываются на объявление виртуальной функции?
****************(ответ)************************
#include <iostream.h>
class Base
public:
virtual void fn() {
cout << "Мы в классе Base\n";}
} ;

class Subclass : public Base {
public:
virtual void fn() {
cout << "Мы в классе Subclass\n";}
};
void test(Bases b) {
b.fn (); //Используется позднее связывание
}
int main (int argcs, char* pArgs[] )
{
Base be;
Subclass sc;
cout << "Вызываем функцию test(be)\n";
test(be);
cout << "Вызываем функцию test(sc)\n";
test(sc);
return 0;
}
Ключевое слово v i r t u a l сообщает C++ о том, что f n () является полиморфной функцией-членом. Это так называемое виртуальное объявление f n (} означает, что ее
вызовы будут связаны позже, если есть хоть какие-то сомнения по поводу типа аргу- мента, с которым будет вызываться функция f n () на этапе выполнения.
В приведенном фрагменте fr, () вызывается через промежуточную функцию t e s t (). Когда функции t e s t () передается объект базового класса, b.fnO вызывает
функцию Base: : f n (). Но когда функции test () передается объект класса Subclass, этот же вызов обращается к функции Subclass : : £п () .
Запуск программы приведет к выводу на экран таких строк:
Вызываем функцию test(be)
Мы в классе Base
Вызываем функцию test(sc)
Мы в классе Subclass
*********************************************
14. Когда вызов виртуальной функции не является виртуальным?
****************(ответ)************************
Если функция-член объявлена в подклассе с другими аргумента-
ми, она не будет переопределена как полиморфная, независимо от того, объявле-
на она виртуальной или нет
*********************************************

#############################
#___________ВНИМАНИЕ______________#
#я не даю гарантии что все ЭТО павильно#
#############################
но я бы ответил так!


Последний раз редактировалось: 3aebc9_Huk_podbiat' (Пн Фев 13 2006 05:59), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
3aebc9_Huk_podbiat'



Зарегистрирован: 13.02.2006
Сообщения: 3

СообщениеДобавлено: Пн Фев 13 2006 05:48    Заголовок сообщения: Ответить с цитатой

контрольна раб №1 вариант №4 вопрос 8. забыл это тока ввод!
вот полный ответ

//Ввод
cout <<"vvedite char -> "; cin >> ch; //считали char
cout <<"vvedite double -> "; cin >> db; // считали double
cout <<"vvedite string -> "; cin >> str; // считали string
// вывод по строчно
cout << "\nchar="<<ch<<"\ndouble="<<db<<"\nstring="<<str;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm



Зарегистрирован: 17.11.2003
Сообщения: 211
Откуда: Казань

СообщениеДобавлено: Пн Фев 13 2006 16:23    Заголовок сообщения: аццко Ответить с цитатой

Аццкий ацтой. Выпей йаду баклан. Пеши стихами, тогда может и прочитаю.
_________________
love IT
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Wladimir



Зарегистрирован: 02.03.2005
Сообщения: 150
Откуда: Ставропольский край

СообщениеДобавлено: Пн Фев 13 2006 22:18    Заголовок сообщения: Ответить с цитатой

Многабукф. Ниасилил. Sad
Аффтар, учи архиваторы!

P.S.
Сорри, вырвалось.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Сб Фев 18 2006 08:58    Заголовок сообщения: Ответить с цитатой

а нахрен мне в моей стране, девушка-программист, которая не может решить 2 простые контрольные?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...