#include <iostream>
#include <string>
using namespace std;
class Foo
{
private:
string m_name;
const string m_name_on_born;
public:
Foo (const string &name): m_name(name), m_name_on_born(name) {
cout <<"Hi! I am " << m_name << endl;
}
~Foo() {
cout << m_name << " (on born be " << m_name_on_born << ") be destructed" << endl;
};
Foo& operator=(const Foo &other) {
cout <<"Hi! I am " << m_name << ". ";
cout << "But i be renamed to " << other.m_name << endl;
m_name = other.m_name;
return *this;
}
};
int main(int argc, char const *argv[])
{
Foo foo("foo");
foo = string("tmp");
return 0;
}
explicit
, тогда запись obj = 1;
будет некорректной. Foo(const Foo &foo); // Конструктор копирования
Foo(int i); // Неявный конструктор
Foo& Foo::operator= (const Foo &foo); // Оператор присваивания
затем потихоньку его заполнить - по нему всё равно пройдётся конструктор по умолчанию
Что-то не достаточно. Ведь пример из поста это чистый Си.