Как можно определить бинарную операцию?
Что будет выведено на экран после выполнения программы?
int main() { int i, j; j = 0; for( i = 0; i < 10; i++) { j++; if (j == 5) continue; } cout << j; return 0; }
0
 
5
 
10
 
11
 
Как можно определить унарную операцию?
Чему будет равна переменная
x
перед выходом из данной функции?void f() { int x = 2; x = x++; }
1
 
2
 
3
 
Укажите постфиксную операцию декремента?
T* operator--();
 
T* operator--(int);
 
Какой из этих операторов сложения возвращает сумму по значению?
operator+();
operator++();
Какой из этих операторов сложения возвращает сумму по ссылке?
operator+();
operator++();
Будет ли работать этот оператор?
MyClass operator+(MyClass x1, MyClass x2) { int sum= x1.a + x2.a; return *new MyClass(sum); }
Дано частичное определение класса MyClass:class MyClass { int a; //... public: MyClass(int); MyClass(const MyClass&); //... }; Будет ли работать этот оператор:
MyClass operator+(MyClass x1, MyClass x2) { int sum= x1.a + x2.a; MyClass result(sum); return result; }
result
- локальный объект 
Какие из перечисленных операторов не следует реализовывать как внешние функции, а только как функции-члены класса:
=
 
()
 
==
 
+
 
->
 
Класс
Point
имеет данные-членыint x,y
. Какая из следующих операторных функций содержит ошибку?
int Point::operator[] (int i) {if ( i == 0) return x; if(i==1) return y; else return -1;}
 
bool Point::operator==(Point a) { return (x==a.x && y==a.y);}
 
double Point::operator()() {return sqrt(x*x+y*y);}
 
Point& Point::operator++() {x++; y++; return this;}
 
Класс
Point
имеет данные-членыint x,y
. Какая из следующих операторных функций содержит ошибку?
Point& Point::operator++() {x++; y++; return *this;}
 
Point& Point::operator--(Point &a) { a.x--;a.y--;return a;}
 
Point operator--(Point& a,int n)
{ Point temp=a;
if(n!=0) {for(int i=0;i<n;i++) --a;}
else --a;
return temp;
}
 
Класс
Point
имеет данные-членыint x,y
. Какая из следующих операторных функций содержит ошибку?
Point& operator--(Point& a) { a.x--;a.y--; return a;}
 
Point Point::operator+(Point& a)
{ Point b; b.x=x+a.x; b.y=y+a.y; return b;};
 
double Point::operator() {return sqrt(x*x+y*y);}
 
Выберете корректное объявление
1.class A{ friend A&operator+(A&a, A&b); }; A&operator+(A&a, A&b); 2.class A{ friend A&operator+(A&b); }; A&A::operator+(A&a, A&b); 3.class A{ A&operator+(A&b); }; friend A&A::operator+(A&a, A&b);
1
 
2
 
3
 
Чему будет равняться переменная
"z"
после выполнения следующего кода:int SUMM(int x, int y) { return (x+y); } int main() { int z=0; { int x=1; int y=3; } z=SUMM(x,y); return 0; }
0
 
1
 
4
 
Выберите верное утверждение:
Имя_класса* operator->()
 
Имя_класса* operator->
 
Чему будет равняться значение переменной
x
после выполнения следующего кода:#include "iostream.h" #include "conio.h" int main() { int x=1; M2:; for(int i=1;i<5;i++,x++); if(x>5) goto M1; else goto M2; M1: cout<<x; getch(); return 0; }
К операторам языка С++, которые нельзя перегружать, относят
#
 
[]
 
*
 
В чем ошибка при таком определении бинарного оператора:
String operator+()
?
Какие из перечисленных ниже операторов не могут быть перегружены?
::
 
||
 
^=
 
?
 
~
 
Какой из перечисленных ниже операторов не может быть перегружен?
.
 
|
 
>>
 
Какие операторы языка С++ нельзя перегружать?
/
 
::
 
+
 
Сколько операндов может иметь операторная функция унарного оператора, объявленная как функция-член?
0
 
2
 
3
 
Сколько операндов должна иметь операторная функция бинарного оператора, объявленная как глобальная функция?
0
 
1
 
2
 
3
 
Сколько операндов должна иметь операторная функция бинарного оператора, объявленная как дружественная функция?
0
 
1
 
2
 
3
 
Что будет выведено на экран в результате выполнения приведенной ниже программы:
#include "iostream.h" #include "conio.h" class NewClass { int x; int y; public: NewClass(int x0,int y0) { x=x0; y=y0; } void DISPLAY(void) { cout<<x<<" "<<y; } NewClass operator+(NewClass obj) { NewClass tmp(0,0); tmp.x=x+obj.x; tmp.y=y+obj.y; return tmp; } }; int main() { NewClass obj1(1,3),obj2(5,8); obj1=obj1+obj2; obj1.DISPLAY(); getch(); return 0; }
7,1
 
6 11
 
1,3 5,8
 
Объявлен некоторый класс
A
. Функция объявляется внутри классаA
. Выберите корректные варианты объявления функции перегрузки оператора.
A operator+(A&a, A&b);
 
A operator+(const A&a);
 
A operator+(A a);
 
Выберете корректные объявления
1.class A{ friend A&operator+(A&a, A&b); }; A&operator+(A&a, A&b); 2.class A{ friend A&operator+(A&a, A&b); }; A&A::operator+(A&a, A&b);
Какие приёмы следует использовать для того, чтобы перегруженные операторы были пригодны для операндов разных типов?
Каков синтаксис функций (или операторов) преобразования объекта одного типа в объект другого типа?
operator <имя нового типа>();
 
<имя нового типа> operator ()
; 
operator <имя нового типа>(<имя старого типа>);
 
Выберите верные утверждения:
Выберите верное утверждение:
operator[]
возвращает объект 
operator[]
возвращает ссылку на объект 
Выберите верное утверждение:
операнд_1(операнд_2)
 
operator
 
Объявлен класс:
class Point { int x,y,z; char *s; public: Point(int,int,int, char*); int GetX() { return x;} int GetY() { return y;} int GetZ() { return z;} Point* operator->() { return this;} }; Point::Point(int x1,int y1,int z1, char * s1) { x=x1; y=y1; z=z1; int n=strlen(s1); s=new char[n+1]; for(int i=0;i<=n;i++) s[i]=s1[i];} Какие из следующих операторов приведут к ошибкам компиляции?
Point Pt(1,2,3,"MyPt");
 
cout<<Pt->GetX()<<'\t'<<Pt->GetY()<<'\t'<<Pt->GetZ()<<endl;
 
cout<<Pt->x<<'\t'<<Pt->y<<'\t'<<Pt->z<<endl;
 
cout<<Pt->s<<endl;