Не соглашусь. Вся инкапсуляция завязана на "ты это поле не трогай, оно начинается с _ или __ и оно не для тебя". Это просто условность, которой все следуют. При этом ты спокойно получаешь досту к "приватным" полям и методам.
А как вам такое?
class A:
def hello(self):
return self.b_name()
class B(A):
def __init__(self, name):
self._name = name
def b_name(self):
return self._name
b = B('Vasya')
b.hello()
Класс "А" обращается к методу дочернего класса. Можно притянуть, что тут даже функции - это инстанс типа "function", и все состоит из объектов.
MyClass::MyClass()
: m_worker{std::thread{[this]{
std::lock_guard l{m_mutex};
...
}}} {}
А что вы ожидали, когда пытались запустить в потоке лямбду с захваченным this, который не сконструирован?
Запусти вы поток внутри тела конструктора, без проблем.
Не соглашусь. Вся инкапсуляция завязана на "ты это поле не трогай, оно начинается с _ или __ и оно не для тебя". Это просто условность, которой все следуют. При этом ты спокойно получаешь досту к "приватным" полям и методам.
А как вам такое?
Класс "А" обращается к методу дочернего класса. Можно притянуть, что тут даже функции - это инстанс типа "function", и все состоит из объектов.