0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 6
1

Почему работают методы явно не созданного объекта

15.04.2016, 03:00. Показов 518. Ответов 4
Метки нет (Все метки)

Привет.
Беглый поиск не дал ответа на вопрос, почему работает нижеприведённый код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class SomeClass 
{
    public: 
        SomeClass::SomeClass(){}
        void doSomeThing(){}
}; 
 
int main(int argc, char* argv[])
{
    SomeClass someClass; 
    someClass.doSomeThing(); 
}
Ведь формально переменная только объявляется,
код не содержит явных инструкций инстанцировать объект.
Заранее спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2016, 03:00
Ответы с готовыми решениями:

Почему не работают методы списка (односвязного), при вызове ф-ий? (Код прилагается)
Написал такой код, для односвязного списка. И когда начал компилировать, столкнулся с проблемой :...

Почему static методы работают быстрее Instance методов?
Почему static методы работают быстрее Instance методов?

Почему после приведения к базовому классу работают методы производного?
Я же привожу экземпляр к базовому типу. Почему работают методы производного? class DocumentWorker...

Почему некоторые методы в Release не работают, тогда как в Debug все нормально?
Всем привет! Пришло время узнать, а собственно почему некоторые методы в Reliase не работают, так...

4
С чаем беда...
Эксперт CЭксперт С++
9989 / 5341 / 1461
Регистрация: 18.10.2014
Сообщений: 12,858
15.04.2016, 03:11 2
Цитата Сообщение от plank Посмотреть сообщение
Ведь формально переменная только объявляется,
код не содержит явных инструкций инстанцировать объект.
Это с чего бы это?

Вот это

C++
1
SomeClass someClass;
ни что иное, как определение объекта someClass типа SomeClass. Объект инициализируется конструктором по умолчанию.

Другое дело, что вот за это

C++
1
2
3
4
5
6
class SomeClass 
{
    public: 
        SomeClass::SomeClass(){}
    ...
};
компилятор должен был вам дать по голове. В объявлениях методов внутри определения класса запрещается указывать квалифицированные имена.
0
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 6
15.04.2016, 05:09  [ТС] 3
Хорошо, на счёт дефолтного конструктора я так и предполагал, но сомнения оставались.
Компилятор по голове не дал, так что спасибо вам

Подскажите пожалуста, как должен выглядеть на плюсах следущий код на шарпе.

C#
1
2
3
4
SomeClass variable = null;                     // объявляем переменную
SomeClass instance = new SomeClass(); // создаём инстанс класса (с этим теперь всё ясно)
variable = instance;                             // ссылаемся переменной на инстанс
variable.doSomeThing()                        // вызываем метод
Добавлено через 22 минуты
Вроде заработало:

C++
1
2
3
4
SomeClass* variable;
SomeClass instance; 
variable = &instance;
(*variable).doSomeThing();
Не наломал ли я где дров?
0
2753 / 1908 / 568
Регистрация: 05.06.2014
Сообщений: 5,559
15.04.2016, 05:40 4
Цитата Сообщение от plank Посмотреть сообщение
Подскажите пожалуста, как должен выглядеть на плюсах следущий код на шарпе.
C++
1
2
3
SomeClass instance;
SomeClass& variable = instance;                             // ссылаемся переменной на инстанс
variable.doSomeThing()                        // вызываем метод
Цитата Сообщение от plank Посмотреть сообщение
Не наломал ли я где дров?
(*variable).doSomeThing(); variable->doSomeThing();
0
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 6
15.04.2016, 13:30  [ТС] 5
Спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2016, 13:30
Помогаю со студенческими работами здесь

Получение доступа к свойствам программно созданного объекта массива из эвента этого же объекта
У меня программно создается массив кнопок, и надо каждой присвоить эвент при нажатии на нее. Как...

Почему float явно приводится к decimal?
Почему float явно приводится к decimal? Что запрещало сделать это неявным преобразованием?

Почему byte можно преобразовать явно в char?
Почему byte можно преобразовать явно в char?

Перемещение динамически созданного объекта
Суть задания в том чтобы сделать что то вроде калькулятора математической логики, но в виде схем. В...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru