Вот код.
#include<iostream>
class MyExpirementalString
{
public:
void operator=(const char *const cstr)
{
/// Проверяем работу перегруженного оператора =
std::cout<<cstr<<std::endl;
}
};
int main()
{
std::string str0="Hello"; /// Все нормально
MyExpirementalString str="Hello"; /// Ошибка. Почему?
/// Тогда как
str="Hello"; /// Работает нормально
}
Почему не получается перегрузить оператор = что бы он работал сразу при создании переменной?
MyExpirementalString s="str";
Обновление:
Исправил класс так:
#include<iostream>
class MyExpirementalString
{
public:
MyExpirementalString(const char *const cstr)
{
std::cout<<cstr<<std::endl;
}
};
int main()
{
std::string str0="Hello"; /// Все нормально
MyExpirementalString str="Hello"; /// Все нормально
}
Но что тут происходит? Плюсы взрывают мозг