Можно ли установить ссылку на "ничто"?

Как можно инициализировать ссылку на переменную в структуре при создании экземпляра данной структуры, чтобы изначально ссылка была пустой?
  • 9 марта 2024 г. 18:38
Ответы на вопрос 2
В большинстве языков программирования нельзя установить ссылку на "ничто", так как ссылка всегда должна указывать на какой-то объект или переменную.

Чтобы инициализировать ссылку на переменную в структуре так, чтобы изначально ссылка была пустой, можно использовать специальное значение или флаг, который будет показывать, что ссылка пуста. Например, в языке программирования C++ можно использовать значение `nullptr` для этого:

```cpp
#include <iostream>

struct MyStruct {
    int* ptr = nullptr;
};

int main() {
    MyStruct myInstance;
    
    if (myInstance.ptr == nullptr) {
        std::cout << "Ссылка пуста" << std::endl;
    } else {
        std::cout << "Ссылка указывает на адрес " << myInstance.ptr << std::endl;
    }
    
    return 0;
}
```

Таким образом, при создании экземпляра структуры `MyStruct`, ссылка `ptr` будет инициализирована значением `nullptr`, что позволит проверять ее на пустоту.
Примерно то, что вам нужно - можно. Только ссылки никогда не бывают нулевыми. Поэтому вам надо во всех конструкторах класса ссылку чем-то инициализировать. 

В вашем коде 2 проблемы. = default; можно писать, если у вас нет никакого списка инициализации. И константную ссылку нельзя использовать для инициализации неконстантной.

Вот такой код компилируется:
template<typename T>
struct Test
{
    T& ref;  // нужно присвоить null

    Test(T& _ref) : ref(_ref) {};
};
Похожие вопросы