Joris Van Remoortere created MESOS-2756:
-------------------------------------------
Summary: Update style guide: Avoid object slicing
Key: MESOS-2756
URL: https://issues.apache.org/jira/browse/MESOS-2756
Project: Mesos
Issue Type: Improvement
Reporter: Joris Van Remoortere
Assignee: Joris Van Remoortere
In order to improve the safety of our code base, let's augment the style guide
to:
"Disallow public construction of base classes"
so that we can avoid the object slicing problem. This is a good pattern to
follow in general as it prevents subtle semantic bugs like the following:
{code:title=ObjectSlicing.cpp|borderStyle=solid}
#include <stdio.h>
#include <vector>
class Base {
public:
Base(int _v) : v(_v) {}
virtual int get() const { return v; }
protected:
int v;
};
class Derived : public Base {
public:
Derived(int _v) : Base(_v) {}
virtual int get() const { return v + 1; }
};
int main() {
Base b(5);
Derived d(5);
std::vector<Base> vec;
vec.push_back(b);
vec.push_back(d);
for (const auto& v : vec) {
printf("[%d]\n", v.get());
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)