LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Есть ограниченное наследование интерфейсов. Чего нет, так это наследования реализации, но тут такая проблема: любая вменяемая книга по ООП, выпущенная в 90х и позже всячески советует наследование реализации избегать.

вот вопрос. как это написать на расте.

using cstring = const std::string;

class Named{
	cstring _name;
public:
	Named(cstring &fname):_name(fname){}
	cstring &name()const{return _name;}
};

class Foo:public Named{
	Foo(cstring &fname):Named(fname){}
};

void fff(){
	Foo lfoo("foo");
	std::cout<<lfoo.name();
}

Исходная версия alysnix, :

Есть ограниченное наследование интерфейсов. Чего нет, так это наследования реализации, но тут такая проблема: любая вменяемая книга по ООП, выпущенная в 90х и позже всячески советует наследование реализации избегать.

вот вопрос. как это написать на расте.

using cstring = const std::string;

class Named{
	cstring _name;
public:
	Named(cstring &fname):_name(fname){}
	const cstring &name()const{return _name;}
};

class Foo:public Named{
	Foo(cstring &fname):Named(fname){}
};

void fff(){
	Foo lfoo("foo");
	std::cout<<lfoo.name();
}