Предположим, что у нас есть функция-член от class X
, и это X f()
, которая возвращает объект class X
и не принимает никаких аргументов.Что происходит, когда функция-член без аргументов вызывается объектом в C++
Так что, если он вызывается объектом class X
, скажем X obj
является объектом.
Так что, если мы называем obj.f()
, так на С ++ правила секретный аргумент передается функции f()
и что this
указатель на объект, который содержит адрес объекта, который вызывает f()
.
Так что мое замешательство заключается в том, как он управляется C++, потому что это означает, что мы никогда не можем иметь функцию-член в C++ без каких-либо аргументов, потому что каждый раз, когда будет передан секретный аргумент.
Для функции с аргументом сказать func(int a)
, это на самом деле функция, которая может принимать 2 аргумента, где один из аргументов секретный аргумент (this
указатель), а другой int a
.
Итак, что мы можем сделать, если мы строго хотим использовать функцию-член в C++ без каких-либо аргументов (например, в случае процедуры обслуживания прерываний)?
Пожалуйста, скажите мне, если я ошибаюсь, или если у меня отсутствует какая-то концепция.
Я d'ОНТ действительно получить, почему скрытый аргумент, что вы не потрудились управлять, может помешать вам делать то, что вы хотите – Guiroux
вы можете сделать статический метод, который будет вызываться без «этого» секретного аргумента. –
Я немного исправил ваш вопрос, но есть слишком много «так в нем», поэтому вы можете немного перефразировать его. BTW, для таких случаев, как ISR, вы можете просто объявить 'static void f()' inside 'class X'. Обратите внимание, что вам нужно вернуть 'void', потому что ISR не должен возвращать какое-либо значение. –