Hamster wrote:Mongush wrote:Есть![]()
при i++ создается временная преременая.
А оптимизация на что?
Ну если оптимизация еще както.. То endl() - уж точно никаким боком - мож так задумано?
![HBZ :pain1:](./images/smilies/pain25.gif)
roeh wrote:вот мне недавно задали вопрос, что произойдёт при попытке выполнения вот этого кода:Code: Select all
typedef struct {
char a;
char b;
} someStruct;
int
main ( int, char** )
{
someStruct ss;
someStruct* pSS;
pSS = ( someStruct* ) ss;
pSS->a = 'a';
printf ( "%c\n", ss.a );
return 0;
}
указания на факт, что statement pSS = ( someStruct* ) ss; в принципе -бессмыслица не принимаются.
Code: Select all
typedef
struct
{
char a;
} SomeStruct;
int main()
{
SomeStruct ss;
printf( "ss = 0x%08x\n", &ss );
return 0;
}
Code: Select all
...
leal -2(%ebp), %eax ; Получаем адрес ss
pushl %eax ; ...и записываем его в стек
pushl $.LC0
...
Code: Select all
...
pushw -2(%ebp) ; Совсем не то, что нужно
pushl $.LC0
...
Шоколадина wrote:1. На вход программы должно поступить ((2 в 32-ой) - 1) положительных целых чисел размером 4 байта. Известно заранее, что все они разные. Задача: написать программу, использующую МИНИМУМ ПАМЯТИ, которая определяет, какое именно число (а оно, как понятно, ровно одно) НЕ поступало на вход программы.
Hamster wrote:2) решается рекурсией, хотя немного мутно. Три случая:
(а) m = n. Делаем m swap'ов, задача решена.
(b) m > n. Делаем n swap'ов, m' = m-n, n' = n, повторяем.
(c) m < n. Делаем m swap'ов, m' = m, n' = n-m, повторяем.
ballymahon wrote:8K wrote:uncle_Pasha wrote:yocto wrote:uncle_Pasha wrote:Если класс не задумывался как базовый, почему бы не использовать struct?
Так ведь объявление типа через struct не запрещает наследование.
Оно объясняет смысл данного элемента данных.
99% что никому не прийдет в голову наследоваться от struct в дальнейшем
Неужели нельзя "запечатать" класс собственными средствами С++? Не верю.
А как интересно? Можно конечно не использовать виртуальных функций и protected членов (о чем уже упоминалось) и тогда от наследования не будет особого толку, хотя сама возможность и будет присутствовать.
Как запретить наследование от данного класса - разве что сделать все конструкторы приватными и создавать обьекты статической функцией?
awq900 wrote:Посмотрел вопросы для чайников и понял, что я даже в чайники не гожусь. xотя я пограмаю на C ++ более 5 лет и, главное, это меня кормит, приносит "башки" моей компании и удовлетворение клиентам.
Вот например, первый вопрос из http://v.psiola.ru/cpp/index.htm для чайников.
Cколько символов "A" выведет на экран следующая программа:
#include <iostream>
using namespace std;
struct A
{A(){cout << "A";}; ~A(){cout << "A";};};
struct B : public A
{B(){cout << "B";}; ~B(){cout << "B";};};
struct C : public B
{C(){cout << "C";}; ~C(){cout << "C";};};
int main() {C c;return 0;}
Я не знаю ответ, а главное и знать не хочу![]()
Я не доумеваю, для чего нужны такие тесты?! Зачем их используют при приеме на работу?
Может кто-нибудь занает ответы ...
Паша
Hamster wrote:Sullen wrote:Ну зачем же? Достаточно сделать private destructor.
У private destructor будет побочный эффект - объекты можно будет создавать только динамически через new и потом удалять только через функцию-член класса.
Hamster wrote:Mongush wrote:Есть![]()
при i++ создается временная преременая.
А оптимизация на что?