Что означает X f ()?
Я вижу этот код, и я не понимаю, что это значит. Я знаю, как мы используем конструктор по умолчанию, но это не стандартный конструктор. Что это?
class X { ... }; int main() { X f(); }
- Как использовать JWT в приложении MVC для аутентификации и авторизации?
- Приложение C # как GUI, так и командная строка
- Почему в нашем проекте требуются интерфейсные слои / абстрактные classы?
- В C # Winforms есть способ поместить пунктирную границу вокруг всех элементов управления и показать точки захвата при выборе определенных элементов управления во время выполнения?
- Создание элементов из 3 коллекций с использованием Linq
- «Внутренняя ошибка произошла». При загрузке файла pfx с помощью X509Certificate2
- Как перетаскивать и перемещать фигуры в C #
- Свойство DependencyProperty для представления twoway-bind для свойства viewmodel?
- Проверьте, существует ли свойство в classе
- Атомность `write (2)` в локальную файловую систему
- Как игнорировать маршрут в asp.net
- Каков хороший способ перезаписать DateTime.Now во время тестирования?
- SmtpException: невозможно прочитать данные из транспортного соединения: net_io_connectionclosed
Он объявляет функцию f
которая не принимает никаких параметров и возвращает тип X
Это также известно как Most Vexing Parse в C ++. Это побочный результат того, как стандарт C ++ определяет правила интерпретации деклараций.
Предположим, вы объявили функцию:
int Random();
И используйте его:
int main() { int n; n = Random(); }
Но реализуйте функцию Random после main
. Или предположим, что функция Random
определена в некотором заголовке. Вам нужно указать компилятору, что Random
– это функция, реализованная в каком-либо другом исходном файле или в какой-либо библиотеке.
Следовательно, выражение типа:
T foo();
Всегда будет означать инструкцию для компилятора, что есть функция с именем foo
которая возвращает T
Он не может быть объектом типа T
Его функция объявляет имя f
X f(); ^ ^ function return type
функция f()
принимает аргументов и возвращает объект classа X
например, его определение может быть следующим:
class X{ int i; // other definition } X f(){ X x; // some more code return x; }
В основном вы можете использовать как:
int main(){ X a = f(); int i = f().i; }
Это функция, которая не принимает никаких аргументов и возвращает объект classа X