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

Орфография - C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.08.2011, 15:00     Орфография #1
C++
1
2
3
4
5
6
7
class CClass
{
private:
    int someValue;
public:
    CClass() {someValue = 0}    
};
а теперь точно такой же но с ;

C++
1
2
3
4
5
6
7
class CClass
{
private:
    int someValue;
public:
    CClass() {someValue = 0;} // <-there    
};
???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2011, 15:00     Орфография
Посмотрите здесь:

Орфография татарского языка MS Word
орфография в биосе к чему бы это? BIOS
Delphi Орфография в RichEdit
Программа Орфография на C++ C++
Печать красной волнистой линии (орфография) VBA
Lazarus Лазарус, msegui, орфография и библиотеки
Орфография SpellCheck C#

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
13.08.2011, 15:01     Орфография #2
И что, результаты компилляции одинаковые или разные?
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.08.2011, 15:04  [ТС]     Орфография #3
Цитата Сообщение от Илларион Посмотреть сообщение
одинаковые
угу...
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.08.2011, 15:08     Орфография #4
Mayonez, мм.. попробуйте все таки перекомпилировать 1-ый вариант, мне кажется вы ошибаетесь.
пс. что за компиль?
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
13.08.2011, 15:09     Орфография #5
g++ 4.1.2

t.cpp: In constructor 'CClass::CClass()':
Line 6: error: expected `;' before '}' token
compilation terminated due to -Wfatal-errors.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.08.2011, 15:18  [ТС]     Орфография #6
OstapBender, прошу прощение, действительно для заданого примера 1 вариант не работает
Среда MSVS 10
но если так:

C++
1
2
3
4
5
6
7
8
template <typename T>
class CClass
{
private:
        int someValue;
public:
        CClass() {someValue = 0}        
};
и
C++
1
2
3
4
5
6
7
8
template <typename T>
class CClass
{
private:
        int someValue;
public:
        CClass() {someValue = 0;}        
};
то разницы нет
grizlik78
Эксперт С++
 Аватар для grizlik78
1887 / 1419 / 103
Регистрация: 29.05.2011
Сообщений: 2,968
13.08.2011, 15:26     Орфография #7
Цитата Сообщение от Mayonez Посмотреть сообщение
но если так:
Скорее всего это до тех пор, пока не попробуешь инстанцировать класс с использованием конструктора по умолчанию.

Добавлено через 3 минуты
Попробуй создать объект:
C++
1
CClass<int> c;
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
13.08.2011, 15:40     Орфография #8
Цитата Сообщение от grizlik78 Посмотреть сообщение
Скорее всего это до тех пор, пока не попробуешь инстанцировать класс с использованием конструктора по умолчанию.

Добавлено через 3 минуты
Попробуй создать объект:
C++
1
CClass<int> c;
Именно так это уже обсуждалось, студия вообще не заглядывает в шаблон до инстанциирования.
grizlik78
Эксперт С++
 Аватар для grizlik78
1887 / 1419 / 103
Регистрация: 29.05.2011
Сообщений: 2,968
13.08.2011, 15:44     Орфография #9
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
студия вообще не заглядывает в шаблон до инстанциирования.
Но это не вина студии. Это стандартное поведение.

Добавлено через 2 минуты
То есть это не значит, что компиляторы не имеют права туда заглядывать. Просто они имеют право не заглядывать
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
13.08.2011, 15:45     Орфография #10
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но это не вина студии. Это стандартное поведение.
Я и не обвиняю.. Приходит такая мысль, что это сделанно для того что бы не изобретать нового алгоритма для обработки шаблонов, то есть сначла просто вместо параметров подсталять типы, а потом обрабатыать это тем же алгоритмом, что и обычные классы.
grizlik78
Эксперт С++
 Аватар для grizlik78
1887 / 1419 / 103
Регистрация: 29.05.2011
Сообщений: 2,968
13.08.2011, 15:47     Орфография #11
Возможно. Хотя разработчики GCC, похоже, не поленились, так как он отсутствие точки с запятой не позволяет ни в каком виде.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.08.2011, 15:58  [ТС]     Орфография #12
grizlik78, тоесть без ; это в любом случае ошибка?
grizlik78
Эксперт С++
 Аватар для grizlik78
1887 / 1419 / 103
Регистрация: 29.05.2011
Сообщений: 2,968
13.08.2011, 16:07     Орфография #13
Цитата Сообщение от Mayonez Посмотреть сообщение
grizlik78, тоесть без ; это в любом случае ошибка?
Да. GCC такой код не пропускает даже без инстанцирования.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.08.2011, 16:11  [ТС]     Орфография #14
ТЕПЕРЬ ВОПРОС ПРО --> , <---
C++
1
2
3
int mas[] = {1, 2, 3};
 
int mas[] = {1, 2, 3,};
???
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
13.08.2011, 16:23     Орфография #15
Мне кажется, что это уже особенность проверки синтаксиса, как и эта:
C
1
2
3
4
5
6
7
#include <stdio.h>
 
int main()
{
    printf("%c\n", 2["asdf"]);
    return 0;
}
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
13.08.2011, 16:26  [ТС]     Орфография #16
но даже майкрософтовский не жалуется и программа работает
grizlik78
Эксперт С++
 Аватар для grizlik78
1887 / 1419 / 103
Регистрация: 29.05.2011
Сообщений: 2,968
13.08.2011, 17:02     Орфография #17
Цитата Сообщение от Mayonez Посмотреть сообщение
int mas[] = {1, 2, 3,};
Вообще, если заглянуть в стандарт C++03, то в разделе 8.5 можно найти описание initializer-list, которое в общем-то разрешает такую запятую. Правда я там не заметил пояснения зачем. Но с другой стороны это может облегчить написание макросов, как мне кажется.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.08.2011, 17:08     Орфография #18
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но с другой стороны это может облегчить написание макросов, как мне кажется.
например?
grizlik78
Эксперт С++
 Аватар для grizlik78
1887 / 1419 / 103
Регистрация: 29.05.2011
Сообщений: 2,968
13.08.2011, 17:21     Орфография #19
Nameless One, ну говорю же, кажется Подумалось о том, что последняя запятая может быть частью макроса, тогда его повторение было бы корректным, без необходимости отдельно выделять конец. Но с другой стороны никто, вроде, не мешает разделять сами макросы запятыми, так что выгода сомнительна Не знаю я!

Добавлено через 3 минуты
Скорее уж тогда не макросы, а кодогенератор чуточку попроще можно реализовать.

Добавлено через 5 минут
А ещё в нижеследующей записи массива можно легко менять строки или столбцы местами, не задумываясь о том, являются ли они последними.
C++
1
2
3
4
5
6
int a[16] = {
    1, 2, 3, 4,
    2, 3, 4, 1,
    3, 4, 1, 2,
    4, 1, 2, 3,
};
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
13.08.2011, 17:24     Орфография #20
Nameless One, например в случае написания X-макросов иногда может пригодиться:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define ALL_COLORS \
    X(red) \
    X(green) \
    X(blue)
 
// ...
 
#define X(a) a,
enum Colors { ALL_COLORS };
#undef X
 
// ...
 
#define X(a) #a,
char const * ColorStrings[] = { ALL_COLORS };
#undef X
Yandex
Объявления
13.08.2011, 17:24     Орфография
Ответ Создать тему
Опции темы

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