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

Colon syntex - C++

Восстановить пароль Регистрация
 
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
03.06.2012, 13:47     Colon syntex #1
Я правильно понимаю, что колон синтекс может применяться только при создании коструктора класса?
Для имплементации членов функций он не используется.
Например:

Point::Point (double xNew, double yNew)
C++
1
2
3
4
5
6
{
    i_pc+=1;
    cout << "Point  const. was called: "<<i_pc<< " times"  << endl; 
    Xcoord = xNew; 
    Ycoord = yNew;
}
Равняется :

C++
1
2
3
4
5
6
 Point::Point (double xNew, double yNew)
     : Xcoord(xNew), Ycoord(yNew)
 {  
                i_pc+=1;
        cout << "Point  const. was called: "<<i_pc<< " times"  << endl;                 
 }
Но нельзя :
C++
1
2
3
4
5
void Point::SetYCoordinate(const double Value) 
 
{
    Ycoord = Value;
}
переписать в колон синтекс ???
Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2012, 13:47     Colon syntex
Посмотрите здесь:

Assembler Error: comma, colon or end of line expected

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
03.06.2012, 16:18     Colon syntex #2
А можно как-то на русском объяснить чего вы хотите? Вот эти слова переведите:
Цитата Сообщение от Leeto Посмотреть сообщение
колон синтекс
Цитата Сообщение от Leeto Посмотреть сообщение
имплементации
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
03.06.2012, 18:37  [ТС]     Colon syntex #3
Цитата Сообщение от Gepar Посмотреть сообщение
А можно как-то на русском объяснить чего вы хотите? Вот эти слова переведите:
я извиняюсь...

ну типа я знаю что конструктор можно реализовать 2мя вариантами которые я выше указал, а вот можно же так же члены функции классов реализовать двумя способами. Заранее спасибо
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
03.06.2012, 19:50     Colon syntex #4
Цитата Сообщение от Leeto Посмотреть сообщение
а вот можно же так же члены функции классов реализовать двумя способами
Нет. Всё, что находится после двоеточия, это список инициализации. В вашем примере, в первом случае переменным присваиваются значения, а во втором перменные инициализируются значением. Т.е., для первого случая выполняется следующее(присваивание)
C++
1
2
3
4
double Xcoord;
double Ycoord;
Xcoord = xNew;
Ycoord = yNew;
для второго(инициализация)
C++
1
2
double Xcoord = xNew;
double Ycoord = yNew;
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
03.06.2012, 19:51     Colon syntex #5
Ну вроде понял чего ты спросить хотел.
Инициализация x(2) от x=2. Отличается. В конструкторе можно использовать первую форму (а иногда и нужно так как иначе не получится в случае с наследованием) так как объект ещё не создан вот тебе с++ и даёт свободу чтобы ты при создании объекта его инициализировал. При вызове функции же объект уже существует и нельзя его инициализировать задействовав конструктор копирования через ().
Так понятно?
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
03.06.2012, 22:05  [ТС]     Colon syntex #6
Цитата Сообщение от Gepar Посмотреть сообщение
Ну вроде понял чего ты спросить хотел.
Инициализация x(2) от x=2. Отличается. В конструкторе можно использовать первую форму (а иногда и нужно так как иначе не получится в случае с наследованием) так как объект ещё не создан вот тебе с++ и даёт свободу чтобы ты при создании объекта его инициализировал. При вызове функции же объект уже существует и нельзя его инициализировать задействовав конструктор копирования через ().
Так понятно?
Не вопрос не в том чем отличается хотя тоже спасибо ) я хотел узнать можно ли так же передавать значение в переменную если речь идет не о конструкторе а о членах функциях. Я так понимаю что x(2) более быстрый вариант по сравнению с x=2... и если бы можно было бы срезать углы на этой беговой дорожке таким образом то было бы здорово...
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
03.06.2012, 22:20     Colon syntex #7
Цитата Сообщение от Leeto Посмотреть сообщение
Я так понимаю что x(2) более быстрый вариант по сравнению с x=2... и если бы можно было бы срезать углы на этой беговой дорожке таким образом то было бы здорово...
Не быстрый. Не совсем я бы сказал:
x(2) - вызов конструктора копирования при создании объекта и всё. Итого 1 операция
x=2 - вызов конструктора по умолчанию при создании объекта и тут же вызов оператора присваивания. Итого 2 операции
Тоесть "срезать углы" получиться лишь при создании объекта же. Дальше при работе он уже создан, нечего срезать.
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
04.06.2012, 12:58  [ТС]     Colon syntex #8
Цитата Сообщение от Gepar Посмотреть сообщение
Не быстрый. Не совсем я бы сказал:
x(2) - вызов конструктора копирования при создании объекта и всё. Итого 1 операция
x=2 - вызов конструктора по умолчанию при создании объекта и тут же вызов оператора присваивания. Итого 2 операции
Тоесть "срезать углы" получиться лишь при создании объекта же. Дальше при работе он уже создан, нечего срезать.
ну так это то и интересно ) две операции меньше больше чем одна в 2 раза ) (спасибо Кэп) если, а если 35 классов так вообще здорово. Так можно таким же макаром синтаксис менять для членнов класса ? и если да то насколько это устойчиво получиться ?
Yandex
Объявления
04.06.2012, 12:58     Colon syntex
Ответ Создать тему
Опции темы

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