Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
#1

Три камня преткновения - C++

07.08.2013, 19:00. Просмотров 811. Ответов 14
Метки нет (Все метки)

Доброго времени суток форумчане!

Углубляясь в изучение этого интересного ЯП постоянно генерируются вопросы, ответы на которые не смог нагуглить, но их понимание необходимо для дальнейшего изучения, поэтому хочу обратиться к более профессиональным программистам, которые помогут мне разобраться в следующем:

1) В википедии прочитал следующее =>
"Существует множество реализаций языка С++, как бесплатных, так и коммерческих и для различных платформ.
Например, на платформе х86 это GCC, Visual C++, intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие."
Вопрос в следующем - как можно узнать какую реализацию С++ я изучаю (пишу полиморфные конструкции хеллоу ворда в консоли )?
Ну и если можно то расскажите в 2-3х словах о каждой разновидности, чтоб скорректировать направление изучения.

2) В С++ при описании функции можно задать условия, что аргументы неизвестны (...). Итак имеем следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
void func(...)
{
cout << x;
}
 
int main()
{
int x = 7;
func(x);
return 0;
}
каким образом можно в func() использовать значение "x"? (использование шаблонов не предлагать )

3) Имеем базовый класс myAuto c 2-мя членами инт (итого - 8 бит). Наследуем новый класс Lada еще с 2 членами инт, и при следующем коде:
C++
1
2
3
4
void main()
{
Lada *ptrL = new Lada;
}
Имеем указатель на объект Lada размер которого 4 бита... Как так получается, Lada же должна наследовать
8 байт от класса myAuto + имеет свои 8 байт, итого размер, который, логически, должен быть = 16 байт? (размер определяю через функцию sizeof)

 Комментарий модератора 
По отдельным вопросам создаем разные темы. Предупреждение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2013, 19:00     Три камня преткновения
Посмотрите здесь:

путешествие камня по галактике - C++
Нужно решить такую задачу Камень движется по вселенной со постоянной скоростью U Допустим он начинает двигаться с этих координат 37°...

Определение положения камня - C++
Всем доброго время суток. Написать программу, которой по введенному пользователем времени t определяется положение камня (высота от дна...

Ошибка в коде. Программа расчета броска камня - C++
Программа расчета броска камня по Методу Рунге-Кутта. Выдает ошибку в классе вектор, не получается ее исправить. Программа в результате...

Решение физической задачи: рассчитать полет камня, брошенного под углом к горизонту - C++
День добрый! Есть проблемка изучаю c++ первый день, прошу помощи по данной задаче. Вот ее условие:Человек,находящийся на краю обрыва...

Дано слово. Переставить первые три и последние три буквы - C++
Привет всем. Помогите пожалуйста кто может решить две задачи по C++. Сам пробовал решить_но безуспешно. 1.Дано слово. Переставить...

Три ученика и три языка. Определить кто на каком программирует. - C++
Решите задачи на C++(в виде кода программы) 3.Три ученика (Коля, Петя и Сережа) умеют писать программы на трех языках программирования...

Даны три списка потребителей и три массива объёмов электроэнергии - C++
Даны три списка потребителей и три массива объёмов электроэнергии. Напечатать из каждого списка потребителей с минимальным(min) и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 2
Завершенные тесты: 1
07.08.2013, 19:04     Три камня преткновения #2
Цитата Сообщение от BESSON_off Посмотреть сообщение
myAuto c 2-мя членами инт (итого - 8 бит)
не бит, а байт
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,011
07.08.2013, 19:07     Три камня преткновения #3
Цитата Сообщение от BESSON_off Посмотреть сообщение
(размер определяю через функцию sizeof)
sizeof указателя == размер машинного слова, зависит от разрядности системы. Для получения размера объекта - sizeof(*obj).
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
07.08.2013, 19:09     Три камня преткновения #4
1) каждая реализация реализует Стандарт C++. Все, что не определено Стандартом, называется undefined behavior, поведение в таких случаях зависит от компилятора (реализации). Таких случаев надо избегать со страшной силой.

2) va_list и компания.

3) размер указателя - 4 байта, размер объекта - 16.
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
07.08.2013, 19:59  [ТС]     Три камня преткновения #5
Цитата Сообщение от 0x10 Посмотреть сообщение
sizeof указателя == размер машинного слова, зависит от разрядности системы. Для получения размера объекта - sizeof(*obj).
sizeof(*ptr) - получить размер объекта
sizeof(ptr) - получить размер указателя
sizeof(&ptr) - ?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,011
07.08.2013, 20:02     Три камня преткновения #6
Цитата Сообщение от BESSON_off Посмотреть сообщение
sizeof(&ptr) - ?
Адрес указателя == указатель.
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
07.08.2013, 20:05  [ТС]     Три камня преткновения #7
2) va_list и компания.

Разобрался:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* va_arg example */
#include <stdio.h>      /* printf */
#include <stdarg.h>     /* va_list, va_start, va_arg, va_end */
 
int FindMax (int n, ...)
{
  int i,val,largest;
  va_list vl;
  va_start(vl,n);
  largest=va_arg(vl,int);
  for (i=1;i<n;i++)
  {
    val=va_arg(vl,int);
    largest=(largest>val)?largest:val;
  }
  va_end(vl);
  return largest;
}
 
int main ()
{
  int m;
  m= FindMax (7,702,422,631,834,892,104,772);
  printf ("The largest value is: %d\n",m);
  return 0;
}
Это на случай, если кому-то интересно

Офигеть, насколько интересный язык
ching0n
3 / 3 / 1
Регистрация: 06.08.2013
Сообщений: 23
07.08.2013, 20:48     Три камня преткновения #8
Цитата Сообщение от BESSON_off Посмотреть сообщение
Офигеть, насколько интересный язык

Не по теме:

А то! Поговаривают, что на C++ написана вся Вселенная.

korvin_
1709 / 1247 / 190
Регистрация: 28.04.2012
Сообщений: 4,519
07.08.2013, 22:45     Три камня преткновения #9
Цитата Сообщение от ching0n Посмотреть сообщение
А то! Поговаривают, что на C++ написана вся Вселенная.

Не по теме:

В первый раз такое слышу. http://xkcd.ru/224/ =)

ching0n
3 / 3 / 1
Регистрация: 06.08.2013
Сообщений: 23
07.08.2013, 22:55     Три камня преткновения #10
korvin_,

Не по теме:

Первоначально представлял собой C + ООП + тележка разных прелестей. Ныне же, со всеми доработками и библиотеками, абсолютно всеобъемлющ, поэтому предположительно является языком, на котором Б-г написал Вселенную. (http://lurkmore.to/C%2B%2B)

BESSON_off
08.08.2013, 20:07  [ТС]
  #11

Не по теме:

А вот вики на него что-то косо смотрит...

ching0n
08.08.2013, 20:17
  #12

Не по теме:

BESSON_off, где вики косо смотрит? Прочитал введение -- ничего не нашёл.

BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
09.08.2013, 18:42  [ТС]     Три камня преткновения #13
Цитата Сообщение от ching0n Посмотреть сообщение

Не по теме:

BESSON_off, где вики косо смотрит? Прочитал введение -- ничего не нашёл.

Читайте раздел 8 (Достоинства языка и его критика).
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,011
09.08.2013, 18:45     Три камня преткновения #14
Цитата Сообщение от BESSON_off Посмотреть сообщение
Читайте раздел 8 (Достоинства языка и его критика).
Нет идеальных инструментов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2013, 19:55     Три камня преткновения
Еще ссылки по теме:

Найти три максимальных и три минимальных значения 10 случайных чисел - C++
помогите написать программку.

В интервале от 1 до 100, вывести все числа, кроме делящихся на три или имеющих в записи цифру три - C++
вывести цикл от 1 до 100, так чтобы числа имеющие 3 или которые можно разделить на 3 не выводились. пробовал через массивы, но нужно по...

Заданы матрицы А, В, С, D, каждая из которых содержит по три строчки и по три столбца. Перемножить матрицы Р и Q - C++
Заданы матрицы А, В, С, D, каждая из которых содержит по три строчки и по три столбца. Перемножить матрицы Р и Q, полученные в результате...

Даны три стороны одного и три стороны другого треугольника. Я, чайник нужно в С++ - C++
Даны три стороны одного и три стороны другого треугольника. Эти треугольники равновеликие, т.е. имеют равные площади

Известно, что число делится на три тогда и только тогда, когда сумма его цифр делится на три. Проверим этот признак для заданного трехзначного числа X - C++
Известно, что число делится на три тогда и только тогда, когда сумма его цифр делится на три. Проверим этот признак для заданного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
10.08.2013, 19:55  [ТС]     Три камня преткновения #15
Так на меня эти мнения и не повлияли, я представляю возможности этого языка, и поражаюсь им
Yandex
Объявления
10.08.2013, 19:55     Три камня преткновения
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru