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

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

Войти
Регистрация
Восстановить пароль
 
spyphy
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 35
#1

что происходит при создание объекта так: obj(); - C++

19.01.2014, 21:44. Просмотров 328. Ответов 5
Метки нет (Все метки)

Следующие эквивалентные записи в общем-то понятны:
Код
Class obj;
Class obj = Class();
Но я по ошибке написал так:
Код
Class obj();
на что компилятор dev-c++ ничего не сказал и спокойно прокомпилировал это дело.
Правда работать с полями этого какбы объекта я не могу.
Посему возникает сразу несколько вопросов:
- что означает эта конструкция, почему и как компилятор ее понимает?
- почему я не могу создавать (нормальные) объекты таким образом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2014, 21:44     что происходит при создание объекта так: obj();
Посмотрите здесь:

При возврате объекта из функции пишет, что для объекта не определен констуктор копирования - C++
Пишу шаблонный класс матриц. Делаю, значит, переопределение оператора + для двух матриц одного типа. Но компилятор ругается на эту функцию ...

Что происходит при вызове? - C++
class A { ... }; void f(A &a) { ... } A a; ...

Что происходит при наследовании классов? - C++
Гуглил тут одну тему про наследование и коде встретилась строчка: D d; Что в ней конкретно происходит ? или как это называется ? ...

Объясните, что происходит при использовании const_cast - C++
#include <iostream> using namespace std; void sqr(int& a) { a = a*a; } int main() { const int b = 5;

Ошибка при создание объекта - C++
int main{ int *a = new int; return 0; } Не компилится, подчеркивает int*a и выдает Error: type name is now allowed. ...

Что происходит при удалении/добавлении элемента в контейнер vector? - C++
Объясните пожалуйста, какие этапы проходят при добавлении и удалении элемента из контейнера

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

Что происходит за кулисами при выделении памяти для переменной? - C++
Здравствуйте, уважаемые форумчане! У меня такой вопрос: "Что происходит, когда я объявляю переменную? Я думаю, что когда я объявляю...

Насколько трудно понять при диассемблировании, что происходит вызов rand? - C++
Вдруг образовался жизненно важный вопрос. Насколько трудно понять хакеру при диассемблировании, что происходит вызов rand? Я говорю,...

Как сделать так,что бы при введение,например 0;0 выдавалось сообщение,что точка находится на границе? - C++
#include <iostream> using namespace std; int main(){ double x, y; int R=10 cout << "Введите x: " <<...

Создание объекта в функции и возврат объекта из нее - C++
Не могу разобраться с ссылками. Возможно ли вернуть из функции объект созданный в стеке при этом копи конструктор публичный. ...

Что не так при работе с указателями? - C++
Здравствуйте! Начинаю изучать работу с указателями. #include <iostream> using namespace std; int fun(int a, int b, long...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
19.01.2014, 21:46     что происходит при создание объекта так: obj(); #2
Цитата Сообщение от spyphy Посмотреть сообщение
- что означает эта конструкция
прототип функции

Добавлено через 21 секунду
Цитата Сообщение от spyphy Посмотреть сообщение
объекты таким образом?
скобки уберите и всё
spyphy
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 35
19.01.2014, 21:54  [ТС]     что происходит при создание объекта так: obj(); #3
Цитата Сообщение от Croessmah Посмотреть сообщение
прототип функции
для меня новость, что прототипы функций можно объявлять внутри функции main()
AllLoveGames
1 / 1 / 0
Регистрация: 04.01.2014
Сообщений: 40
19.01.2014, 22:12     что происходит при создание объекта так: obj(); #4
spyphy, если сказать тебе проще, то это конструктор класса получился)))

Добавлено через 11 минут
хотя нет, предыдущее сообщение чушь))
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
19.01.2014, 22:19     что происходит при создание объекта так: obj(); #5
http://en.wikipedia.org/wiki/Most_vexing_parse
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6422 / 3061 / 303
Регистрация: 04.12.2011
Сообщений: 8,344
Записей в блоге: 3
19.01.2014, 23:13     что происходит при создание объекта так: obj(); #6
Цитата Сообщение от spyphy Посмотреть сообщение
Следующие эквивалентные записи в общем-то понятны:
Непонятны.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
class A{
public: 
void operator()(){ cout<<"that's possible, if an operator \"()\" is overloaded";}
};
 
int main(){
//Class obj;//1>./.../ : error C2065: Class: необъявленный идентификатор
//class subject = subject();//1> error C2513:  main::subject: нет переменных, объявленных перед '=' /..../ 1> error C2514: main::subject: не имеет конструкторов
 
//Class obj();//1>./.../ : error C2065: Class: необъявленный идентификатор
//хотя так могло быть:
A obj;
obj();
cin.get();
return 0;
}
Yandex
Объявления
19.01.2014, 23:13     что происходит при создание объекта так: obj();
Ответ Создать тему
Опции темы

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