Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2

Что не так с этим кодом?

19.02.2014, 14:46. Показов 1651. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что не так с этим кодом?
C++
#include <stdio.h>
 
struct Texture
{
    unsigned int tex;
 
    Texture() { tex = 0; }
};
 
int main()
{
    Texture texture;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2014, 14:46
Ответы с готовыми решениями:

Что не так с этим кодом?
Код должен производить pacчeт траектории движeния капель щелока в excel. В vba к сожалению практически ничего не понимаю. Dim...

Что не так с этим кодом ?
В PyCharm все работает, а если из командной строки python-e файл давать, то ошибку выдает ! from selenium import webdriver ...

Что не так с этим кодом? Массивы
Подскажите, пожалуйста, что здесь неправильно. Дан массив из 20 элементов. Массив заполняется с клавиатуры. Вывести массив на экран....

11
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
19.02.2014, 14:48
А что с ним не так?
1
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
19.02.2014, 14:51  [ТС]
Цитата Сообщение от Тамика Посмотреть сообщение
А что с ним не так?
А Скот Маерс ругается на этот код.

Добавлено через 2 минуты
Вот что он пишет:
Цитата Сообщение от Scott Meyers
warning: ‘Texture::tex’ should be initialized in the member initialization list
Только не понятно почему от так считает.
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
19.02.2014, 14:52
Цитата Сообщение от programina Посмотреть сообщение
Texture(): tex(0){}
Да и неплохо бы сделать переменную tex приватной. А для получения tex - константную GetTex();
1
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
19.02.2014, 14:55  [ТС]
Цитата Сообщение от Тамика Посмотреть сообщение
Texture(): tex(0){}
Texture() { tex = 0; }
А какая между ними разница? ))
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
19.02.2014, 14:57
Переменна будет инициализирована до начала тела конструктора. Это не критично в данном случае. Но лучше делать так.
1
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,645
Записей в блоге: 6
19.02.2014, 14:59
Тошо не следует выполнять определение переменных внутри тела конструктора. Лучше пользоваться строкой инициализации.
Цитата Сообщение от programina Посмотреть сообщение
А какая между ними разница? ))
Дело в том, что строка инициализации вызывает конструкторы для соответствующих полей класса, а определение в теле конструктора вызывает оператор присваивания. Таким образом вы дважды определяете поля класса сперва конструкторами по умолчанию затем оператором присваивания.
1
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
19.02.2014, 15:07  [ТС]
Цитата Сообщение от Ilot Посмотреть сообщение
Тошо не следует выполнять определение переменных внутри тела конструктора
для чего же тогда нужен конструктор если не для инициализации переменных?

Вобщем Скот Маерс идет лесом, я отключаю его опцию -Weffc++.
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,645
Записей в блоге: 6
19.02.2014, 15:15
Цитата Сообщение от programina Посмотреть сообщение
для чего же тогда нужен конструктор если не для инициализации переменных?
Вы должно быть не до конца поняли. При определении полей класса в теле конструктора сперва будут созданны эти переменные конструкторами по умолчанию, а затем им будет присвоено значение из тела конструктора. Если пользоваться строкой инициализации то для полей класса будут вызванны соответствующие конструкторы которые создадут переменные полей класса.
Попробуйте запустить два констуктора для В:
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
27
28
29
30
31
32
33
34
35
36
37
#include<iostream>
using namespace std;
class A {
    int a;
public:
    A(): a()
    {
        cout << "Конструктор по умолчанию A()\n";
    }
    A(int _a): a(_a)
    {
        cout << "Конструктор A(int a)\n";
    }
    A& operator= (A& _a)
    {
        a = _a.a;
        cout << "Оператор присваения\n";
        return *this;
    }
};
class B
{
    A a_in_B;
public:
    B(A a)
    {
        a_in_B = a;
    }
    //B(A a): a_in_B(a) {}
};
int main() {
    system("chcp 1251>0");
    A a(10);
    B b(a);
    system("pause");
    return 0;
}
1
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
19.02.2014, 15:31
Таким образом вы дважды определяете поля класса сперва конструкторами по умолчанию затем оператором присваивания.
будут созданны эти переменные конструкторами по умолчанию
В данном случае поле tex встроенного типа в отсутствии списка инициализации инициализировано не будет (в отличии от пользовательских классов) и будет иметь неопределённое значение. По этому здесь оба случая (список инициализации или тело конструктора) полностью эквивалентны.
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
19.02.2014, 16:44
Цитата Сообщение от programina Посмотреть сообщение
Вобщем Скот Маерс идет лесом, я отключаю его опцию -Weffc++.
Лучше почитать его книжки перед тем, как включать эту опцию
1
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
19.02.2014, 16:51
Лучший ответ Сообщение было отмечено programina как решение

Решение

Цитата Сообщение от programina Посмотреть сообщение
Только не понятно почему от так считает.
Это результат неверного исполнения гайдлайна из Effective C++. Конкретно, это баг №16166 компилятора GCC http://gcc.gnu.org/bugzilla/sh... d=16166#c3
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2014, 16:51
Помогаю со студенческими работами здесь

Сериализация: что не так с этим кодом?
В курсе Байдачного http://www.microsoftvirtualacademy.com/training-courses/csharp_part_2 в 17 уроке приводится такой код. У автора...

Что не так с этим кодом? В чем его ошибка?
public class CustomMath { public static int multiply(int a, string b) { return a * b; } }

IndexError: list index out of range Что не так с этим кодом
sum = &quot;&quot; a = n = len(a) x,y = 0,0 for i in range(n): x = i-1 y = i+1 print(a + a)

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при открытии программы\игры Фуллскрином. т.е...

Что не так с этим ЧПУ
подскажите пожалуйста, не могу разобраться. Правильно ли я делаю замену урлов? (У меня стоит Денвер) Ввожу в адресной строке: ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru