http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/java/jni/org_apache_mesos_MesosExecutorDriver.cpp
----------------------------------------------------------------------
diff --git a/src/java/jni/org_apache_mesos_MesosExecutorDriver.cpp 
b/src/java/jni/org_apache_mesos_MesosExecutorDriver.cpp
index 39dba40..9d1d456 100644
--- a/src/java/jni/org_apache_mesos_MesosExecutorDriver.cpp
+++ b/src/java/jni/org_apache_mesos_MesosExecutorDriver.cpp
@@ -38,19 +38,19 @@ public:
     env->GetJavaVM(&jvm);
   }
 
-  virtual ~JNIExecutor() {}
+  ~JNIExecutor() override {}
 
-  virtual void registered(ExecutorDriver* driver,
+  void registered(ExecutorDriver* driver,
                           const ExecutorInfo& executorInfo,
                           const FrameworkInfo& frameworkInfo,
-                          const SlaveInfo& slaveInfo);
-  virtual void reregistered(ExecutorDriver* driver, const SlaveInfo& 
slaveInfo);
-  virtual void disconnected(ExecutorDriver* driver);
-  virtual void launchTask(ExecutorDriver* driver, const TaskInfo& task);
-  virtual void killTask(ExecutorDriver* driver, const TaskID& taskId);
-  virtual void frameworkMessage(ExecutorDriver* driver, const string& data);
-  virtual void shutdown(ExecutorDriver* driver);
-  virtual void error(ExecutorDriver* driver, const string& message);
+                          const SlaveInfo& slaveInfo) override;
+  void reregistered(ExecutorDriver* driver, const SlaveInfo& slaveInfo) 
override;
+  void disconnected(ExecutorDriver* driver) override;
+  void launchTask(ExecutorDriver* driver, const TaskInfo& task) override;
+  void killTask(ExecutorDriver* driver, const TaskID& taskId) override;
+  void frameworkMessage(ExecutorDriver* driver, const string& data) override;
+  void shutdown(ExecutorDriver* driver) override;
+  void error(ExecutorDriver* driver, const string& message) override;
 
   JavaVM* jvm;
   JNIEnv* env;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
----------------------------------------------------------------------
diff --git a/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp 
b/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
index 1f9572c..762fe85 100644
--- a/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
+++ b/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
@@ -46,27 +46,27 @@ public:
     env->GetJavaVM(&jvm);
   }
 
-  virtual ~JNIScheduler() {}
+  ~JNIScheduler() override {}
 
-  virtual void registered(SchedulerDriver* driver,
+  void registered(SchedulerDriver* driver,
                           const FrameworkID& frameworkId,
-                          const MasterInfo& masterInfo);
-  virtual void reregistered(SchedulerDriver*, const MasterInfo& masterInfo);
-  virtual void disconnected(SchedulerDriver* driver);
-  virtual void resourceOffers(SchedulerDriver* driver,
-                              const vector<Offer>& offers);
-  virtual void offerRescinded(SchedulerDriver* driver, const OfferID& offerId);
-  virtual void statusUpdate(SchedulerDriver* driver, const TaskStatus& status);
-  virtual void frameworkMessage(SchedulerDriver* driver,
+                          const MasterInfo& masterInfo) override;
+  void reregistered(SchedulerDriver*, const MasterInfo& masterInfo) override;
+  void disconnected(SchedulerDriver* driver) override;
+  void resourceOffers(SchedulerDriver* driver,
+                              const vector<Offer>& offers) override;
+  void offerRescinded(SchedulerDriver* driver, const OfferID& offerId) 
override;
+  void statusUpdate(SchedulerDriver* driver, const TaskStatus& status) 
override;
+  void frameworkMessage(SchedulerDriver* driver,
                                 const ExecutorID& executorId,
                                 const SlaveID& slaveId,
-                                const string& data);
-  virtual void slaveLost(SchedulerDriver* driver, const SlaveID& slaveId);
-  virtual void executorLost(SchedulerDriver* driver,
+                                const string& data) override;
+  void slaveLost(SchedulerDriver* driver, const SlaveID& slaveId) override;
+  void executorLost(SchedulerDriver* driver,
                             const ExecutorID& executorId,
                             const SlaveID& slaveId,
-                            int status);
-  virtual void error(SchedulerDriver* driver, const string& message);
+                            int status) override;
+  void error(SchedulerDriver* driver, const string& message) override;
 
   JavaVM* jvm;
   JNIEnv* env;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp
----------------------------------------------------------------------
diff --git a/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp 
b/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp
index 1deeb08..4e4dd54 100644
--- a/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp
+++ b/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp
@@ -80,62 +80,62 @@ public:
       const string& master,
       const Option<Credential>& credential);
 
-  virtual ~V0ToV1Adapter();
+  ~V0ToV1Adapter() override;
 
   // v0 Scheduler interface overrides.
-  virtual void registered(
+  void registered(
       SchedulerDriver* driver,
       const FrameworkID& frameworkId,
       const MasterInfo& masterInfo) override;
 
-  virtual void reregistered(
+  void reregistered(
       SchedulerDriver* driver,
       const MasterInfo& masterInfo) override;
 
-  virtual void disconnected(SchedulerDriver* driver) override;
+  void disconnected(SchedulerDriver* driver) override;
 
-  virtual void resourceOffers(
+  void resourceOffers(
       SchedulerDriver* driver,
       const vector<Offer>& offers) override;
 
-  virtual void offerRescinded(
+  void offerRescinded(
       SchedulerDriver* driver,
       const OfferID& offerId) override;
 
-  virtual void statusUpdate(
+  void statusUpdate(
       SchedulerDriver* driver,
       const TaskStatus& status) override;
 
-  virtual void frameworkMessage(
+  void frameworkMessage(
       SchedulerDriver* driver,
       const ExecutorID& executorId,
       const SlaveID& slaveId,
       const string& data) override;
 
-  virtual void slaveLost(
+  void slaveLost(
       SchedulerDriver* driver,
       const SlaveID& slaveId) override;
 
-  virtual void executorLost(
+  void executorLost(
       SchedulerDriver* driver,
       const ExecutorID& executorId,
       const SlaveID& slaveId,
       int status) override;
 
-  virtual void error(
+  void error(
       SchedulerDriver* driver,
       const string& message) override;
 
   // v1 MesosBase interface overrides.
-  virtual void send(const v1::scheduler::Call& call) override;
+  void send(const v1::scheduler::Call& call) override;
 
-  virtual void reconnect() override
+  void reconnect() override
   {
     // The driver does not support explicit reconnection with the master.
     UNREACHABLE();
   }
 
-  virtual process::Future<v1::scheduler::APIResult> call(
+  process::Future<v1::scheduler::APIResult> call(
       const v1::scheduler::Call& callMessage) override
   {
     // The driver does not support sending a `v1::scheduler::Call` that returns
@@ -157,7 +157,7 @@ class V0ToV1AdapterProcess : public 
process::Process<V0ToV1AdapterProcess>
 public:
   V0ToV1AdapterProcess(JNIEnv* env, jweak jmesos);
 
-  virtual ~V0ToV1AdapterProcess() = default;
+  ~V0ToV1AdapterProcess() override = default;
 
   void registered(const FrameworkID& frameworkId, const MasterInfo& 
masterInfo);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/launcher/default_executor.cpp
----------------------------------------------------------------------
diff --git a/src/launcher/default_executor.cpp 
b/src/launcher/default_executor.cpp
index a70ba06..b89b036 100644
--- a/src/launcher/default_executor.cpp
+++ b/src/launcher/default_executor.cpp
@@ -161,7 +161,7 @@ public:
       launcherDirectory(_launcherDirectory),
       authorizationHeader(_authorizationHeader) {}
 
-  virtual ~DefaultExecutor() = default;
+  ~DefaultExecutor() override = default;
 
   void connected()
   {
@@ -303,7 +303,7 @@ public:
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     mesos.reset(new Mesos(
         contentType,

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/launcher/executor.cpp
----------------------------------------------------------------------
diff --git a/src/launcher/executor.cpp b/src/launcher/executor.cpp
index 9fb43c0..86fb87d 100644
--- a/src/launcher/executor.cpp
+++ b/src/launcher/executor.cpp
@@ -163,7 +163,7 @@ public:
       executorId(_executorId),
       lastTaskStatus(None()) {}
 
-  virtual ~CommandExecutor() = default;
+  ~CommandExecutor() override = default;
 
   void connected()
   {
@@ -264,7 +264,7 @@ public:
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     Option<string> value = os::getenv("MESOS_HTTP_COMMAND_EXECUTOR");
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/linux/cgroups.cpp
----------------------------------------------------------------------
diff --git a/src/linux/cgroups.cpp b/src/linux/cgroups.cpp
index 5c96484..86b0306 100644
--- a/src/linux/cgroups.cpp
+++ b/src/linux/cgroups.cpp
@@ -1185,7 +1185,7 @@ public:
       args(_args),
       data(0) {}
 
-  virtual ~Listener() {}
+  ~Listener() override {}
 
   // Waits for the next event to occur, at which point the future
   // becomes ready. Returns a failure if error occurs. If any previous
@@ -1217,7 +1217,7 @@ public:
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Register an eventfd "notifier" for the given control.
     Try<int> fd = registerNotifier(hierarchy, cgroup, control, args);
@@ -1229,7 +1229,7 @@ protected:
     }
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     // Discard the nonblocking read.
     reading.discard();
@@ -1374,7 +1374,7 @@ public:
       cgroup(_cgroup),
       start(Clock::now()) {}
 
-  virtual ~Freezer() {}
+  ~Freezer() override {}
 
   void freeze()
   {
@@ -1438,7 +1438,7 @@ public:
   Future<Nothing> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     Option<Error> error = verify(hierarchy, cgroup, "freezer.state");
     if (error.isSome()) {
@@ -1452,7 +1452,7 @@ protected:
           static_cast<void(*)(const UPID&, bool)>(terminate), self(), true));
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     promise.discard();
   }
@@ -1474,7 +1474,7 @@ public:
       hierarchy(_hierarchy),
       cgroup(_cgroup) {}
 
-  virtual ~TasksKiller() {}
+  ~TasksKiller() override {}
 
   // Return a future indicating the state of the killer.
   // Failure occurs if any process in the cgroup is unable to be
@@ -1482,7 +1482,7 @@ public:
   Future<Nothing> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -1491,7 +1491,7 @@ protected:
     killTasks();
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     chain.discard();
 
@@ -1626,14 +1626,14 @@ public:
       hierarchy(_hierarchy),
       cgroups(_cgroups) {}
 
-  virtual ~Destroyer() {}
+  ~Destroyer() override {}
 
   // Return a future indicating the state of the destroyer.
   // Failure occurs if any cgroup fails to be destroyed.
   Future<Nothing> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -1652,7 +1652,7 @@ protected:
       .onAny(defer(self(), &Destroyer::killed, lambda::_1));
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     discard(killers);
     promise.discard();
@@ -2694,7 +2694,7 @@ public:
           "memory.pressure_level",
           stringify(level))) {}
 
-  virtual ~CounterProcess() {}
+  ~CounterProcess() override {}
 
   Future<uint64_t> value()
   {
@@ -2706,13 +2706,13 @@ public:
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     spawn(CHECK_NOTNULL(process.get()));
     listen();
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     terminate(process.get());
     wait(process.get());

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/linux/perf.cpp
----------------------------------------------------------------------
diff --git a/src/linux/perf.cpp b/src/linux/perf.cpp
index f5ac21d..dfc4670 100644
--- a/src/linux/perf.cpp
+++ b/src/linux/perf.cpp
@@ -93,7 +93,7 @@ public:
     }
   }
 
-  virtual ~Perf() {}
+  ~Perf() override {}
 
   Future<string> output()
   {
@@ -101,7 +101,7 @@ public:
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -110,7 +110,7 @@ protected:
     execute();
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     // Kill the perf process (if it's still running) by sending
     // SIGTERM to the signal handler which will then SIGKILL the

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/catchup.cpp
----------------------------------------------------------------------
diff --git a/src/log/catchup.cpp b/src/log/catchup.cpp
index ed2e79b..f668268 100644
--- a/src/log/catchup.cpp
+++ b/src/log/catchup.cpp
@@ -56,12 +56,12 @@ public:
       position(_position),
       proposal(_proposal) {}
 
-  virtual ~CatchUpProcess() {}
+  ~CatchUpProcess() override {}
 
   Future<uint64_t> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -70,7 +70,7 @@ protected:
     check();
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     checking.discard();
     filling.discard();
@@ -188,12 +188,12 @@ public:
       timeout(_timeout),
       proposal(_proposal) {}
 
-  virtual ~BulkCatchUpProcess() {}
+  ~BulkCatchUpProcess() override {}
 
   Future<Nothing> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -205,7 +205,7 @@ protected:
     catchup();
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     catching.discard();
 
@@ -337,7 +337,7 @@ public:
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     LOG(INFO) << "Starting missing positions recovery";
 
@@ -352,7 +352,7 @@ protected:
       .onAny(defer(self(), &Self::finished, lambda::_1));
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     VLOG(1) << "Recover process terminated";
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/consensus.cpp
----------------------------------------------------------------------
diff --git a/src/log/consensus.cpp b/src/log/consensus.cpp
index 76ed3e8..bce7fac 100644
--- a/src/log/consensus.cpp
+++ b/src/log/consensus.cpp
@@ -82,12 +82,12 @@ public:
       responsesReceived(0),
       ignoresReceived(0) {}
 
-  virtual ~ExplicitPromiseProcess() {}
+  ~ExplicitPromiseProcess() override {}
 
   Future<PromiseResponse> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -100,7 +100,7 @@ protected:
       .onAny(defer(self(), &Self::watched, lambda::_1));
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     // This process will be terminated when we get responses from a
     // quorum of replicas. In that case, we no longer care about
@@ -286,12 +286,12 @@ public:
       responsesReceived(0),
       ignoresReceived(0) {}
 
-  virtual ~ImplicitPromiseProcess() {}
+  ~ImplicitPromiseProcess() override {}
 
   Future<PromiseResponse> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -304,7 +304,7 @@ protected:
       .onAny(defer(self(), &Self::watched, lambda::_1));
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     // This process will be terminated when we get responses from a
     // quorum of replicas. In that case, we no longer care about
@@ -451,12 +451,12 @@ public:
       responsesReceived(0),
       ignoresReceived(0) {}
 
-  virtual ~WriteProcess() {}
+  ~WriteProcess() override {}
 
   Future<WriteResponse> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -469,7 +469,7 @@ protected:
       .onAny(defer(self(), &Self::watched, lambda::_1));
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     // This process will be terminated when we get responses from a
     // quorum of replicas. In that case, we no longer care about
@@ -620,12 +620,12 @@ public:
       position(_position),
       proposal(_proposal) {}
 
-  virtual ~FillProcess() {}
+  ~FillProcess() override {}
 
   Future<Action> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Stop when no one cares.
     promise.future().onDiscard(lambda::bind(
@@ -634,7 +634,7 @@ protected:
     runPromisePhase();
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     // Discard the futures we're waiting for.
     promising.discard();

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/coordinator.cpp
----------------------------------------------------------------------
diff --git a/src/log/coordinator.cpp b/src/log/coordinator.cpp
index 01d2179..bd78397 100644
--- a/src/log/coordinator.cpp
+++ b/src/log/coordinator.cpp
@@ -56,7 +56,7 @@ public:
       proposal(0),
       index(0) {}
 
-  virtual ~CoordinatorProcess() {}
+  ~CoordinatorProcess() override {}
 
   // See comments in 'coordinator.hpp'.
   Future<Option<uint64_t>> elect();
@@ -65,7 +65,7 @@ public:
   Future<Option<uint64_t>> truncate(uint64_t to);
 
 protected:
-  virtual void finalize()
+  void finalize() override
   {
     electing.discard();
     writing.discard();

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/leveldb.cpp
----------------------------------------------------------------------
diff --git a/src/log/leveldb.cpp b/src/log/leveldb.cpp
index 50d7fe5..72eeffb 100644
--- a/src/log/leveldb.cpp
+++ b/src/log/leveldb.cpp
@@ -41,9 +41,9 @@ namespace log {
 class Varint64Comparator : public leveldb::Comparator
 {
 public:
-  virtual int Compare(
+  int Compare(
       const leveldb::Slice& a,
-      const leveldb::Slice& b) const
+      const leveldb::Slice& b) const override
   {
     // TODO(benh): Use varint comparator.
     LOG(FATAL) << "Unimplemented";
@@ -55,7 +55,7 @@ public:
     UNREACHABLE();
   }
 
-  virtual const char* Name() const
+  const char* Name() const override
   {
     // Note that this name MUST NOT CHANGE across uses of this
     // comparator with the same DB (the semantics of doing so are
@@ -63,14 +63,14 @@ public:
     return "varint64";
   }
 
-  virtual void FindShortestSeparator(
+  void FindShortestSeparator(
       string* start,
-      const leveldb::Slice& limit) const
+      const leveldb::Slice& limit) const override
   {
     // Intentional no-op.
   }
 
-  virtual void FindShortSuccessor(string* key) const
+  void FindShortSuccessor(string* key) const override
   {
     // Intentional no-op.
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/leveldb.hpp
----------------------------------------------------------------------
diff --git a/src/log/leveldb.hpp b/src/log/leveldb.hpp
index ce93fdc..1d5842a 100644
--- a/src/log/leveldb.hpp
+++ b/src/log/leveldb.hpp
@@ -34,12 +34,12 @@ class LevelDBStorage : public Storage
 {
 public:
   LevelDBStorage();
-  virtual ~LevelDBStorage();
+  ~LevelDBStorage() override;
 
-  virtual Try<State> restore(const std::string& path);
-  virtual Try<Nothing> persist(const Metadata& metadata);
-  virtual Try<Nothing> persist(const Action& action);
-  virtual Try<Action> read(uint64_t position);
+  Try<State> restore(const std::string& path) override;
+  Try<Nothing> persist(const Metadata& metadata) override;
+  Try<Nothing> persist(const Action& action) override;
+  Try<Action> read(uint64_t position) override;
 
 private:
   leveldb::DB* db;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/log.hpp
----------------------------------------------------------------------
diff --git a/src/log/log.hpp b/src/log/log.hpp
index 7cba0b1..5612a1a 100644
--- a/src/log/log.hpp
+++ b/src/log/log.hpp
@@ -65,8 +65,8 @@ public:
   process::Future<process::Shared<Replica>> recover();
 
 protected:
-  virtual void initialize();
-  virtual void finalize();
+  void initialize() override;
+  void finalize() override;
 
 private:
   friend class LogReaderProcess;
@@ -131,8 +131,8 @@ public:
   process::Future<mesos::log::Log::Position> catchup();
 
 protected:
-  virtual void initialize();
-  virtual void finalize();
+  void initialize() override;
+  void finalize() override;
 
 private:
   // Returns a position from a raw value.
@@ -179,8 +179,8 @@ public:
       const mesos::log::Log::Position& to);
 
 protected:
-  virtual void initialize();
-  virtual void finalize();
+  void initialize() override;
+  void finalize() override;
 
 private:
   // Helper for converting an optional position returned from the

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/network.hpp
----------------------------------------------------------------------
diff --git a/src/log/network.hpp b/src/log/network.hpp
index 317ae14..fc500d1 100644
--- a/src/log/network.hpp
+++ b/src/log/network.hpp
@@ -256,7 +256,7 @@ public:
   }
 
 protected:
-  virtual void finalize()
+  void finalize() override
   {
     foreach (Watch* watch, watches) {
       watch->promise.fail("Network is being terminated");

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/recover.cpp
----------------------------------------------------------------------
diff --git a/src/log/recover.cpp b/src/log/recover.cpp
index 2167d41..862e089 100644
--- a/src/log/recover.cpp
+++ b/src/log/recover.cpp
@@ -94,7 +94,7 @@ public:
   Future<Option<RecoverResponse>> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Register a callback to handle user initiated discard.
     promise.future().onDiscard(defer(self(), &Self::discard));
@@ -432,7 +432,7 @@ public:
   Future<Owned<Replica>> future() { return promise.future(); }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     LOG(INFO) << "Starting replica recovery";
 
@@ -442,7 +442,7 @@ protected:
     start();
   }
 
-  virtual void finalize()
+  void finalize() override
   {
     VLOG(1) << "Recover process terminated";
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/replica.cpp
----------------------------------------------------------------------
diff --git a/src/log/replica.cpp b/src/log/replica.cpp
index bb5aa8c..25c1280 100644
--- a/src/log/replica.cpp
+++ b/src/log/replica.cpp
@@ -65,7 +65,7 @@ public:
   // directory for storing the underlying log.
   explicit ReplicaProcess(const string& path);
 
-  virtual ~ReplicaProcess();
+  ~ReplicaProcess() override;
 
   // Returns the action associated with this position. A none result
   // means that no action is known for this position. An error result

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/tool/benchmark.hpp
----------------------------------------------------------------------
diff --git a/src/log/tool/benchmark.hpp b/src/log/tool/benchmark.hpp
index b58a659..b980c09 100644
--- a/src/log/tool/benchmark.hpp
+++ b/src/log/tool/benchmark.hpp
@@ -48,8 +48,8 @@ public:
     bool help;
   };
 
-  virtual std::string name() const { return "benchmark"; }
-  virtual Try<Nothing> execute(int argc = 0, char** argv = nullptr);
+  std::string name() const override { return "benchmark"; }
+  Try<Nothing> execute(int argc = 0, char** argv = nullptr) override;
 
   // Users can change the default configuration by setting this flags.
   Flags flags;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/tool/initialize.hpp
----------------------------------------------------------------------
diff --git a/src/log/tool/initialize.hpp b/src/log/tool/initialize.hpp
index 8d4fab1..3ae9f0f 100644
--- a/src/log/tool/initialize.hpp
+++ b/src/log/tool/initialize.hpp
@@ -43,8 +43,8 @@ public:
     bool help;
   };
 
-  virtual std::string name() const { return "initialize"; }
-  virtual Try<Nothing> execute(int argc = 0, char** argv = nullptr);
+  std::string name() const override { return "initialize"; }
+  Try<Nothing> execute(int argc = 0, char** argv = nullptr) override;
 
   // Users can change the default configuration by setting this flags.
   Flags flags;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/tool/read.hpp
----------------------------------------------------------------------
diff --git a/src/log/tool/read.hpp b/src/log/tool/read.hpp
index 00b8617..1ac6d69 100644
--- a/src/log/tool/read.hpp
+++ b/src/log/tool/read.hpp
@@ -47,8 +47,8 @@ public:
     bool help;
   };
 
-  virtual std::string name() const { return "read"; }
-  virtual Try<Nothing> execute(int argc = 0, char** argv = nullptr);
+  std::string name() const override { return "read"; }
+  Try<Nothing> execute(int argc = 0, char** argv = nullptr) override;
 
   // Users can change the default configuration by setting this flags.
   Flags flags;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/log/tool/replica.hpp
----------------------------------------------------------------------
diff --git a/src/log/tool/replica.hpp b/src/log/tool/replica.hpp
index 456ad12..8563bf2 100644
--- a/src/log/tool/replica.hpp
+++ b/src/log/tool/replica.hpp
@@ -48,8 +48,8 @@ public:
     bool help;
   };
 
-  virtual std::string name() const { return "replica"; }
-  virtual Try<Nothing> execute(int argc = 0, char** argv = nullptr);
+  std::string name() const override { return "replica"; }
+  Try<Nothing> execute(int argc = 0, char** argv = nullptr) override;
 
   // Users can change the default configuration by setting this flags.
   Flags flags;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/allocator/mesos/allocator.hpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/allocator.hpp 
b/src/master/allocator/mesos/allocator.hpp
index 900c8ee..4c33747 100644
--- a/src/master/allocator/mesos/allocator.hpp
+++ b/src/master/allocator/mesos/allocator.hpp
@@ -44,7 +44,7 @@ public:
   // Factory to allow for typed tests.
   static Try<mesos::allocator::Allocator*> create();
 
-  ~MesosAllocator();
+  ~MesosAllocator() override;
 
   void initialize(
       const Duration& allocationInterval,
@@ -60,32 +60,33 @@ public:
         fairnessExcludeResourceNames = None(),
       bool filterGpuResources = true,
       const Option<DomainInfo>& domain = None(),
-      const Option<std::vector<Resources>>& minAllocatableResources = None());
+      const Option<std::vector<Resources>>& minAllocatableResources = None())
+        override;
 
   void recover(
       const int expectedAgentCount,
-      const hashmap<std::string, Quota>& quotas);
+      const hashmap<std::string, Quota>& quotas) override;
 
   void addFramework(
       const FrameworkID& frameworkId,
       const FrameworkInfo& frameworkInfo,
       const hashmap<SlaveID, Resources>& used,
       bool active,
-      const std::set<std::string>& suppressedRoles);
+      const std::set<std::string>& suppressedRoles) override;
 
   void removeFramework(
-      const FrameworkID& frameworkId);
+      const FrameworkID& frameworkId) override;
 
   void activateFramework(
-      const FrameworkID& frameworkId);
+      const FrameworkID& frameworkId) override;
 
   void deactivateFramework(
-      const FrameworkID& frameworkId);
+      const FrameworkID& frameworkId) override;
 
   void updateFramework(
       const FrameworkID& frameworkId,
       const FrameworkInfo& frameworkInfo,
-      const std::set<std::string>& suppressedRoles);
+      const std::set<std::string>& suppressedRoles) override;
 
   void addSlave(
       const SlaveID& slaveId,
@@ -93,84 +94,85 @@ public:
       const std::vector<SlaveInfo::Capability>& capabilities,
       const Option<Unavailability>& unavailability,
       const Resources& total,
-      const hashmap<FrameworkID, Resources>& used);
+      const hashmap<FrameworkID, Resources>& used) override;
 
   void removeSlave(
-      const SlaveID& slaveId);
+      const SlaveID& slaveId) override;
 
   void updateSlave(
       const SlaveID& slave,
       const SlaveInfo& slaveInfo,
       const Option<Resources>& total = None(),
-      const Option<std::vector<SlaveInfo::Capability>>& capabilities = None());
+      const Option<std::vector<SlaveInfo::Capability>>& capabilities = None())
+    override;
 
   void addResourceProvider(
       const SlaveID& slave,
       const Resources& total,
-      const hashmap<FrameworkID, Resources>& used);
+      const hashmap<FrameworkID, Resources>& used) override;
 
   void activateSlave(
-      const SlaveID& slaveId);
+      const SlaveID& slaveId) override;
 
   void deactivateSlave(
-      const SlaveID& slaveId);
+      const SlaveID& slaveId) override;
 
   void updateWhitelist(
-      const Option<hashset<std::string>>& whitelist);
+      const Option<hashset<std::string>>& whitelist) override;
 
   void requestResources(
       const FrameworkID& frameworkId,
-      const std::vector<Request>& requests);
+      const std::vector<Request>& requests) override;
 
   void updateAllocation(
       const FrameworkID& frameworkId,
       const SlaveID& slaveId,
       const Resources& offeredResources,
-      const std::vector<ResourceConversion>& conversions);
+      const std::vector<ResourceConversion>& conversions) override;
 
   process::Future<Nothing> updateAvailable(
       const SlaveID& slaveId,
-      const std::vector<Offer::Operation>& operations);
+      const std::vector<Offer::Operation>& operations) override;
 
   void updateUnavailability(
       const SlaveID& slaveId,
-      const Option<Unavailability>& unavailability);
+      const Option<Unavailability>& unavailability) override;
 
   void updateInverseOffer(
       const SlaveID& slaveId,
       const FrameworkID& frameworkId,
       const Option<UnavailableResources>& unavailableResources,
       const Option<mesos::allocator::InverseOfferStatus>& status,
-      const Option<Filters>& filters);
+      const Option<Filters>& filters) override;
 
   process::Future<
       hashmap<SlaveID,
               hashmap<FrameworkID, mesos::allocator::InverseOfferStatus>>>
-    getInverseOfferStatuses();
+    getInverseOfferStatuses() override;
 
   void recoverResources(
       const FrameworkID& frameworkId,
       const SlaveID& slaveId,
       const Resources& resources,
-      const Option<Filters>& filters);
+      const Option<Filters>& filters) override;
 
   void suppressOffers(
       const FrameworkID& frameworkId,
-      const std::set<std::string>& roles);
+      const std::set<std::string>& roles) override;
 
   void reviveOffers(
       const FrameworkID& frameworkId,
-      const std::set<std::string>& roles);
+      const std::set<std::string>& roles) override;
 
   void setQuota(
       const std::string& role,
-      const Quota& quota);
+      const Quota& quota) override;
 
   void removeQuota(
-      const std::string& role);
+      const std::string& role) override;
 
   void updateWeights(
-      const std::vector<WeightInfo>& weightInfos);
+      const std::vector<WeightInfo>& weightInfos) override;
 
 private:
   MesosAllocator();
@@ -187,7 +189,7 @@ class MesosAllocatorProcess : public 
process::Process<MesosAllocatorProcess>
 public:
   MesosAllocatorProcess() {}
 
-  virtual ~MesosAllocatorProcess() {}
+  ~MesosAllocatorProcess() override {}
 
   // Explicitly unhide 'initialize' to silence a compiler warning
   // from clang, since we overload below.

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/allocator/mesos/hierarchical.cpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/hierarchical.cpp 
b/src/master/allocator/mesos/hierarchical.cpp
index 1f1a73f..707dd6b 100644
--- a/src/master/allocator/mesos/hierarchical.cpp
+++ b/src/master/allocator/mesos/hierarchical.cpp
@@ -81,7 +81,7 @@ class RefusedOfferFilter : public OfferFilter
 public:
   RefusedOfferFilter(const Resources& _resources) : resources(_resources) {}
 
-  virtual bool filter(const Resources& _resources) const
+  bool filter(const Resources& _resources) const override
   {
     // TODO(jieyu): Consider separating the superset check for regular
     // and revocable resources. For example, frameworks might want
@@ -122,7 +122,7 @@ public:
   RefusedInverseOfferFilter(const Timeout& _timeout)
     : timeout(_timeout) {}
 
-  virtual bool filter() const
+  bool filter() const override
   {
     // See comment above why we currently don't do more fine-grained filtering.
     return timeout.remaining() > Seconds(0);

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/allocator/mesos/hierarchical.hpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/hierarchical.hpp 
b/src/master/allocator/mesos/hierarchical.hpp
index 0f6c0e9..702e7c0 100644
--- a/src/master/allocator/mesos/hierarchical.hpp
+++ b/src/master/allocator/mesos/hierarchical.hpp
@@ -91,7 +91,7 @@ public:
       quotaRoleSorter(quotaRoleSorterFactory()),
       frameworkSorterFactory(_frameworkSorterFactory) {}
 
-  virtual ~HierarchicalAllocatorProcess() {}
+  ~HierarchicalAllocatorProcess() override {}
 
   process::PID<HierarchicalAllocatorProcess> self() const
   {
@@ -113,32 +113,32 @@ public:
       bool filterGpuResources = true,
       const Option<DomainInfo>& domain = None(),
       const Option<std::vector<Resources>>&
-        minAllocatableResources = None());
+        minAllocatableResources = None()) override;
 
   void recover(
       const int _expectedAgentCount,
-      const hashmap<std::string, Quota>& quotas);
+      const hashmap<std::string, Quota>& quotas) override;
 
   void addFramework(
       const FrameworkID& frameworkId,
       const FrameworkInfo& frameworkInfo,
       const hashmap<SlaveID, Resources>& used,
       bool active,
-      const std::set<std::string>& suppressedRoles);
+      const std::set<std::string>& suppressedRoles) override;
 
   void removeFramework(
-      const FrameworkID& frameworkId);
+      const FrameworkID& frameworkId) override;
 
   void activateFramework(
-      const FrameworkID& frameworkId);
+      const FrameworkID& frameworkId) override;
 
   void deactivateFramework(
-      const FrameworkID& frameworkId);
+      const FrameworkID& frameworkId) override;
 
   void updateFramework(
       const FrameworkID& frameworkId,
       const FrameworkInfo& frameworkInfo,
-      const std::set<std::string>& suppressedRoles);
+      const std::set<std::string>& suppressedRoles) override;
 
   void addSlave(
       const SlaveID& slaveId,
@@ -146,84 +146,85 @@ public:
       const std::vector<SlaveInfo::Capability>& capabilities,
       const Option<Unavailability>& unavailability,
       const Resources& total,
-      const hashmap<FrameworkID, Resources>& used);
+      const hashmap<FrameworkID, Resources>& used) override;
 
   void removeSlave(
-      const SlaveID& slaveId);
+      const SlaveID& slaveId) override;
 
   void updateSlave(
       const SlaveID& slave,
       const SlaveInfo& slaveInfo,
       const Option<Resources>& total = None(),
-      const Option<std::vector<SlaveInfo::Capability>>& capabilities = None());
+      const Option<std::vector<SlaveInfo::Capability>>& capabilities = None())
+    override;
 
   void addResourceProvider(
       const SlaveID& slave,
       const Resources& total,
-      const hashmap<FrameworkID, Resources>& used);
+      const hashmap<FrameworkID, Resources>& used) override;
 
   void deactivateSlave(
-      const SlaveID& slaveId);
+      const SlaveID& slaveId) override;
 
   void activateSlave(
-      const SlaveID& slaveId);
+      const SlaveID& slaveId) override;
 
   void updateWhitelist(
-      const Option<hashset<std::string>>& whitelist);
+      const Option<hashset<std::string>>& whitelist) override;
 
   void requestResources(
       const FrameworkID& frameworkId,
-      const std::vector<Request>& requests);
+      const std::vector<Request>& requests) override;
 
   void updateAllocation(
       const FrameworkID& frameworkId,
       const SlaveID& slaveId,
       const Resources& offeredResources,
-      const std::vector<ResourceConversion>& conversions);
+      const std::vector<ResourceConversion>& conversions) override;
 
   process::Future<Nothing> updateAvailable(
       const SlaveID& slaveId,
-      const std::vector<Offer::Operation>& operations);
+      const std::vector<Offer::Operation>& operations) override;
 
   void updateUnavailability(
       const SlaveID& slaveId,
-      const Option<Unavailability>& unavailability);
+      const Option<Unavailability>& unavailability) override;
 
   void updateInverseOffer(
       const SlaveID& slaveId,
       const FrameworkID& frameworkId,
       const Option<UnavailableResources>& unavailableResources,
       const Option<mesos::allocator::InverseOfferStatus>& status,
-      const Option<Filters>& filters);
+      const Option<Filters>& filters) override;
 
   process::Future<
       hashmap<SlaveID,
       hashmap<FrameworkID, mesos::allocator::InverseOfferStatus>>>
-    getInverseOfferStatuses();
+    getInverseOfferStatuses() override;
 
   void recoverResources(
       const FrameworkID& frameworkId,
       const SlaveID& slaveId,
       const Resources& resources,
-      const Option<Filters>& filters);
+      const Option<Filters>& filters) override;
 
   void suppressOffers(
       const FrameworkID& frameworkId,
-      const std::set<std::string>& roles);
+      const std::set<std::string>& roles) override;
 
   void reviveOffers(
       const FrameworkID& frameworkId,
-      const std::set<std::string>& roles);
+      const std::set<std::string>& roles) override;
 
   void setQuota(
       const std::string& role,
-      const Quota& quota);
+      const Quota& quota) override;
 
   void removeQuota(
-      const std::string& role);
+      const std::string& role) override;
 
   void updateWeights(
-      const std::vector<WeightInfo>& weightInfos);
+      const std::vector<WeightInfo>& weightInfos) override;
 
 protected:
   // Useful typedefs for dispatch/delay/defer to self()/this.

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/allocator/sorter/drf/sorter.hpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/sorter/drf/sorter.hpp 
b/src/master/allocator/sorter/drf/sorter.hpp
index 8a26854..5a4fa5e 100644
--- a/src/master/allocator/sorter/drf/sorter.hpp
+++ b/src/master/allocator/sorter/drf/sorter.hpp
@@ -49,61 +49,62 @@ public:
       const process::UPID& allocator,
       const std::string& metricsPrefix);
 
-  virtual ~DRFSorter();
+  ~DRFSorter() override;
 
-  virtual void initialize(
-      const Option<std::set<std::string>>& fairnessExcludeResourceNames);
+  void initialize(
+      const Option<std::set<std::string>>& fairnessExcludeResourceNames)
+    override;
 
-  virtual void add(const std::string& clientPath);
+  void add(const std::string& clientPath) override;
 
-  virtual void remove(const std::string& clientPath);
+  void remove(const std::string& clientPath) override;
 
-  virtual void activate(const std::string& clientPath);
+  void activate(const std::string& clientPath) override;
 
-  virtual void deactivate(const std::string& clientPath);
+  void deactivate(const std::string& clientPath) override;
 
-  virtual void updateWeight(const std::string& path, double weight);
+  void updateWeight(const std::string& path, double weight) override;
 
-  virtual void allocated(
+  void allocated(
       const std::string& clientPath,
       const SlaveID& slaveId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual void update(
+  void update(
       const std::string& clientPath,
       const SlaveID& slaveId,
       const Resources& oldAllocation,
-      const Resources& newAllocation);
+      const Resources& newAllocation) override;
 
-  virtual void unallocated(
+  void unallocated(
       const std::string& clientPath,
       const SlaveID& slaveId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual const hashmap<SlaveID, Resources>& allocation(
-      const std::string& clientPath) const;
+  const hashmap<SlaveID, Resources>& allocation(
+      const std::string& clientPath) const override;
 
-  virtual const Resources& allocationScalarQuantities(
-      const std::string& clientPath) const;
+  const Resources& allocationScalarQuantities(
+      const std::string& clientPath) const override;
 
-  virtual hashmap<std::string, Resources> allocation(
-      const SlaveID& slaveId) const;
+  hashmap<std::string, Resources> allocation(
+      const SlaveID& slaveId) const override;
 
-  virtual Resources allocation(
+  Resources allocation(
       const std::string& clientPath,
-      const SlaveID& slaveId) const;
+      const SlaveID& slaveId) const override;
 
-  virtual const Resources& totalScalarQuantities() const;
+  const Resources& totalScalarQuantities() const override;
 
-  virtual void add(const SlaveID& slaveId, const Resources& resources);
+  void add(const SlaveID& slaveId, const Resources& resources) override;
 
-  virtual void remove(const SlaveID& slaveId, const Resources& resources);
+  void remove(const SlaveID& slaveId, const Resources& resources) override;
 
-  virtual std::vector<std::string> sort();
+  std::vector<std::string> sort() override;
 
-  virtual bool contains(const std::string& clientPath) const;
+  bool contains(const std::string& clientPath) const override;
 
-  virtual size_t count() const;
+  size_t count() const override;
 
 private:
   // A node in the sorter's tree.

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/allocator/sorter/random/sorter.hpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/sorter/random/sorter.hpp 
b/src/master/allocator/sorter/random/sorter.hpp
index 6e22cf6..7f6c0de 100644
--- a/src/master/allocator/sorter/random/sorter.hpp
+++ b/src/master/allocator/sorter/random/sorter.hpp
@@ -48,66 +48,67 @@ public:
       const process::UPID& allocator,
       const std::string& metricsPrefix);
 
-  virtual ~RandomSorter();
+  ~RandomSorter() override;
 
-  virtual void initialize(
-      const Option<std::set<std::string>>& fairnessExcludeResourceNames);
+  void initialize(
+      const Option<std::set<std::string>>& fairnessExcludeResourceNames)
+    override;
 
-  virtual void add(const std::string& clientPath);
+  void add(const std::string& clientPath) override;
 
-  virtual void remove(const std::string& clientPath);
+  void remove(const std::string& clientPath) override;
 
-  virtual void activate(const std::string& clientPath);
+  void activate(const std::string& clientPath) override;
 
-  virtual void deactivate(const std::string& clientPath);
+  void deactivate(const std::string& clientPath) override;
 
-  virtual void updateWeight(const std::string& path, double weight);
+  void updateWeight(const std::string& path, double weight) override;
 
-  virtual void allocated(
+  void allocated(
       const std::string& clientPath,
       const SlaveID& slaveId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual void update(
+  void update(
       const std::string& clientPath,
       const SlaveID& slaveId,
       const Resources& oldAllocation,
-      const Resources& newAllocation);
+      const Resources& newAllocation) override;
 
-  virtual void unallocated(
+  void unallocated(
       const std::string& clientPath,
       const SlaveID& slaveId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual const hashmap<SlaveID, Resources>& allocation(
-      const std::string& clientPath) const;
+  const hashmap<SlaveID, Resources>& allocation(
+      const std::string& clientPath) const override;
 
-  virtual const Resources& allocationScalarQuantities(
-      const std::string& clientPath) const;
+  const Resources& allocationScalarQuantities(
+      const std::string& clientPath) const override;
 
-  virtual hashmap<std::string, Resources> allocation(
-      const SlaveID& slaveId) const;
+  hashmap<std::string, Resources> allocation(
+      const SlaveID& slaveId) const override;
 
-  virtual Resources allocation(
+  Resources allocation(
       const std::string& clientPath,
-      const SlaveID& slaveId) const;
+      const SlaveID& slaveId) const override;
 
-  virtual const Resources& totalScalarQuantities() const;
+  const Resources& totalScalarQuantities() const override;
 
-  virtual void add(const SlaveID& slaveId, const Resources& resources);
+  void add(const SlaveID& slaveId, const Resources& resources) override;
 
-  virtual void remove(const SlaveID& slaveId, const Resources& resources);
+  void remove(const SlaveID& slaveId, const Resources& resources) override;
 
   // This will perform a weighted random shuffle on each call.
   //
   // TODO(bmahler): Unlike the DRF sorter, the allocator ideally would
   // not call `sort()` for every agent, but rather loop through a single
   // weighted shuffle before re-shuffling..
-  virtual std::vector<std::string> sort();
+  std::vector<std::string> sort() override;
 
-  virtual bool contains(const std::string& clientPath) const;
+  bool contains(const std::string& clientPath) const override;
 
-  virtual size_t count() const;
+  size_t count() const override;
 
 private:
   // A node in the sorter's tree.

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/contender/standalone.hpp
----------------------------------------------------------------------
diff --git a/src/master/contender/standalone.hpp 
b/src/master/contender/standalone.hpp
index 7f68d27..4b5f933 100644
--- a/src/master/contender/standalone.hpp
+++ b/src/master/contender/standalone.hpp
@@ -38,15 +38,15 @@ public:
     : initialized(false),
       promise(nullptr) {}
 
-  virtual ~StandaloneMasterContender();
+  ~StandaloneMasterContender() override;
 
   // MasterContender implementation.
-  virtual void initialize(const MasterInfo& masterInfo);
+  void initialize(const MasterInfo& masterInfo) override;
 
   // In this basic implementation the outer Future directly returns
   // and inner Future stays pending because there is only one
   // contender in the contest.
-  virtual process::Future<process::Future<Nothing>> contend();
+  process::Future<process::Future<Nothing>> contend() override;
 
 private:
   bool initialized;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/contender/zookeeper.cpp
----------------------------------------------------------------------
diff --git a/src/master/contender/zookeeper.cpp 
b/src/master/contender/zookeeper.cpp
index 9a0601a..d62ef83 100644
--- a/src/master/contender/zookeeper.cpp
+++ b/src/master/contender/zookeeper.cpp
@@ -51,7 +51,7 @@ public:
       const Duration& sessionTimeout);
 
   explicit ZooKeeperMasterContenderProcess(Owned<zookeeper::Group> group);
-  virtual ~ZooKeeperMasterContenderProcess();
+  ~ZooKeeperMasterContenderProcess() override;
 
   // Explicitly use 'initialize' since we're overloading below.
   using process::ProcessBase::initialize;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/contender/zookeeper.hpp
----------------------------------------------------------------------
diff --git a/src/master/contender/zookeeper.hpp 
b/src/master/contender/zookeeper.hpp
index d280222..698c5d7 100644
--- a/src/master/contender/zookeeper.hpp
+++ b/src/master/contender/zookeeper.hpp
@@ -50,11 +50,11 @@ public:
 
   explicit ZooKeeperMasterContender(process::Owned<zookeeper::Group> group);
 
-  virtual ~ZooKeeperMasterContender();
+  ~ZooKeeperMasterContender() override;
 
   // MasterContender implementation.
-  virtual void initialize(const MasterInfo& masterInfo);
-  virtual process::Future<process::Future<Nothing>> contend();
+  void initialize(const MasterInfo& masterInfo) override;
+  process::Future<process::Future<Nothing>> contend() override;
 
 private:
   ZooKeeperMasterContenderProcess* process;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/detector/standalone.cpp
----------------------------------------------------------------------
diff --git a/src/master/detector/standalone.cpp 
b/src/master/detector/standalone.cpp
index 2b7c35c..caefd16 100644
--- a/src/master/detector/standalone.cpp
+++ b/src/master/detector/standalone.cpp
@@ -46,7 +46,7 @@ public:
     : ProcessBase(ID::generate("standalone-master-detector")),
       leader(_leader) {}
 
-  ~StandaloneMasterDetectorProcess()
+  ~StandaloneMasterDetectorProcess() override
   {
     discardPromises(&promises);
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/detector/standalone.hpp
----------------------------------------------------------------------
diff --git a/src/master/detector/standalone.hpp 
b/src/master/detector/standalone.hpp
index bbe3ce9..708497f 100644
--- a/src/master/detector/standalone.hpp
+++ b/src/master/detector/standalone.hpp
@@ -48,7 +48,7 @@ public:
   // Same as above but takes UPID as the parameter.
   explicit StandaloneMasterDetector(const process::UPID& leader);
 
-  virtual ~StandaloneMasterDetector();
+  ~StandaloneMasterDetector() override;
 
   // Appoint the leading master so it can be *detected*.
   void appoint(const Option<MasterInfo>& leader);
@@ -56,8 +56,8 @@ public:
   // Same as above but takes 'UPID' as the parameter.
   void appoint(const process::UPID& leader);
 
-  virtual process::Future<Option<MasterInfo>> detect(
-      const Option<MasterInfo>& previous = None());
+  process::Future<Option<MasterInfo>> detect(
+      const Option<MasterInfo>& previous = None()) override;
 
 private:
   StandaloneMasterDetectorProcess* process;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/detector/zookeeper.cpp
----------------------------------------------------------------------
diff --git a/src/master/detector/zookeeper.cpp 
b/src/master/detector/zookeeper.cpp
index 09ae47c..93fe7d9 100644
--- a/src/master/detector/zookeeper.cpp
+++ b/src/master/detector/zookeeper.cpp
@@ -61,9 +61,9 @@ public:
       const Duration& sessionTimeout);
 
   explicit ZooKeeperMasterDetectorProcess(Owned<Group> group);
-  ~ZooKeeperMasterDetectorProcess();
+  ~ZooKeeperMasterDetectorProcess() override;
 
-  virtual void initialize();
+  void initialize() override;
   Future<Option<MasterInfo>> detect(const Option<MasterInfo>& previous);
 
 private:

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/detector/zookeeper.hpp
----------------------------------------------------------------------
diff --git a/src/master/detector/zookeeper.hpp 
b/src/master/detector/zookeeper.hpp
index 5d0435e..045a9be 100644
--- a/src/master/detector/zookeeper.hpp
+++ b/src/master/detector/zookeeper.hpp
@@ -52,14 +52,14 @@ public:
 
   // Used for testing purposes.
   explicit ZooKeeperMasterDetector(process::Owned<zookeeper::Group> group);
-  virtual ~ZooKeeperMasterDetector();
+  ~ZooKeeperMasterDetector() override;
 
   // MasterDetector implementation.
   // The detector transparently tries to recover from retryable
   // errors until the group session expires, in which case the Future
   // returns None.
-  virtual process::Future<Option<MasterInfo>> detect(
-      const Option<MasterInfo>& previous = None());
+  process::Future<Option<MasterInfo>> detect(
+      const Option<MasterInfo>& previous = None()) override;
 
 private:
   ZooKeeperMasterDetectorProcess* process;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/maintenance.hpp
----------------------------------------------------------------------
diff --git a/src/master/maintenance.hpp b/src/master/maintenance.hpp
index 7021f91..388d9e7 100644
--- a/src/master/maintenance.hpp
+++ b/src/master/maintenance.hpp
@@ -54,7 +54,7 @@ public:
       const mesos::maintenance::Schedule& _schedule);
 
 protected:
-  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   const mesos::maintenance::Schedule schedule;
@@ -75,7 +75,7 @@ public:
       const google::protobuf::RepeatedPtrField<MachineID>& _ids);
 
 protected:
-  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   hashset<MachineID> ids;
@@ -95,7 +95,7 @@ public:
       const google::protobuf::RepeatedPtrField<MachineID>& _ids);
 
 protected:
-  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   hashset<MachineID> ids;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 745bf56..2af976f 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -190,7 +190,7 @@ public:
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     ping();
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index a0ac807..0353d55 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -389,7 +389,7 @@ public:
       delay(_delay) {}
 
 protected:
-  virtual void initialize() override
+  void initialize() override
   {
     if (delay.isSome()) {
       process::delay(
@@ -436,7 +436,7 @@ public:
            slaveRemovalLimiter,
          const Flags& flags = Flags());
 
-  virtual ~Master();
+  ~Master() override;
 
   // Message handlers.
   void submitScheduler(

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/quota.hpp
----------------------------------------------------------------------
diff --git a/src/master/quota.hpp b/src/master/quota.hpp
index 7f43996..64b59c0 100644
--- a/src/master/quota.hpp
+++ b/src/master/quota.hpp
@@ -64,7 +64,7 @@ public:
   explicit UpdateQuota(const mesos::quota::QuotaInfo& quotaInfo);
 
 protected:
-  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   const mesos::quota::QuotaInfo info;
@@ -83,7 +83,7 @@ public:
   explicit RemoveQuota(const std::string& _role);
 
 protected:
-  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   const std::string role;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/registrar.cpp
----------------------------------------------------------------------
diff --git a/src/master/registrar.cpp b/src/master/registrar.cpp
index cc19126..7a73a7a 100644
--- a/src/master/registrar.cpp
+++ b/src/master/registrar.cpp
@@ -96,14 +96,14 @@ public:
       flags(_flags),
       authenticationRealm(_authenticationRealm) {}
 
-  virtual ~RegistrarProcess() {}
+  ~RegistrarProcess() override {}
 
   // Registrar implementation.
   Future<Registry> recover(const MasterInfo& info);
   Future<bool> apply(Owned<RegistryOperation> operation);
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
       route(
           "/registry",
@@ -127,7 +127,7 @@ private:
     explicit Recover(const MasterInfo& _info) : info(_info) {}
 
   protected:
-    virtual Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs)
+    Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override
     {
       registry->mutable_master()->mutable_info()->CopyFrom(info);
       return true; // Mutation.

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/registrar.hpp
----------------------------------------------------------------------
diff --git a/src/master/registrar.hpp b/src/master/registrar.hpp
index 70a24fd..4f7c7ce 100644
--- a/src/master/registrar.hpp
+++ b/src/master/registrar.hpp
@@ -46,7 +46,7 @@ class RegistryOperation : public process::Promise<bool>
 {
 public:
   RegistryOperation() : success(false) {}
-  virtual ~RegistryOperation() {}
+  ~RegistryOperation() override {}
 
   // Attempts to invoke the operation on the registry object.
   // Aided by accumulator(s):

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/registry_operations.hpp
----------------------------------------------------------------------
diff --git a/src/master/registry_operations.hpp 
b/src/master/registry_operations.hpp
index c07268e..5a3010d 100644
--- a/src/master/registry_operations.hpp
+++ b/src/master/registry_operations.hpp
@@ -34,7 +34,7 @@ public:
   explicit AdmitSlave(const SlaveInfo& _info);
 
 protected:
-  virtual Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   SlaveInfo info;
@@ -48,7 +48,7 @@ public:
   explicit UpdateSlave(const SlaveInfo& _info);
 
 protected:
-  virtual Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   SlaveInfo info;
@@ -65,7 +65,7 @@ public:
       const TimeInfo& _unreachableTime);
 
 protected:
-  virtual Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   const SlaveInfo info;
@@ -85,7 +85,7 @@ public:
   explicit MarkSlaveReachable(const SlaveInfo& _info);
 
 protected:
-  virtual Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   SlaveInfo info;
@@ -100,7 +100,8 @@ public:
       const hashset<SlaveID>& _toRemoveGone);
 
 protected:
-  virtual Try<bool> perform(Registry* registry, hashset<SlaveID>* 
/*slaveIDs*/);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* /*slaveIDs*/)
+    override;
 
 private:
   const hashset<SlaveID> toRemoveUnreachable;
@@ -114,7 +115,7 @@ public:
   explicit RemoveSlave(const SlaveInfo& _info);
 
 protected:
-  virtual Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   const SlaveInfo info;
@@ -129,7 +130,7 @@ public:
   MarkSlaveGone(const SlaveID& _id, const TimeInfo& _goneTime);
 
 protected:
-  virtual Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   const SlaveID id;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/master/weights.hpp
----------------------------------------------------------------------
diff --git a/src/master/weights.hpp b/src/master/weights.hpp
index 0ce7a65..6d66e5f 100644
--- a/src/master/weights.hpp
+++ b/src/master/weights.hpp
@@ -53,7 +53,7 @@ public:
   explicit UpdateWeights(const std::vector<WeightInfo>& _weightInfos);
 
 protected:
-  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs);
+  Try<bool> perform(Registry* registry, hashset<SlaveID>* slaveIDs) override;
 
 private:
   const std::vector<WeightInfo> weightInfos;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/resource_provider/registrar.hpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/registrar.hpp 
b/src/resource_provider/registrar.hpp
index 458108a..1cc4014 100644
--- a/src/resource_provider/registrar.hpp
+++ b/src/resource_provider/registrar.hpp
@@ -48,7 +48,7 @@ public:
   class Operation : public process::Promise<bool>
   {
   public:
-    virtual ~Operation() = default;
+    ~Operation() override = default;
 
     // Attempts to invoke the operation on the registry object.
     //

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/resource_provider/storage/disk_profile_adaptor.cpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/storage/disk_profile_adaptor.cpp 
b/src/resource_provider/storage/disk_profile_adaptor.cpp
index 7c3aa16..b4551a6 100644
--- a/src/resource_provider/storage/disk_profile_adaptor.cpp
+++ b/src/resource_provider/storage/disk_profile_adaptor.cpp
@@ -46,16 +46,16 @@ class DefaultDiskProfileAdaptor : public DiskProfileAdaptor
 public:
   DefaultDiskProfileAdaptor() {}
 
-  ~DefaultDiskProfileAdaptor() {}
+  ~DefaultDiskProfileAdaptor() override {}
 
-  virtual Future<DiskProfileAdaptor::ProfileInfo> translate(
+  Future<DiskProfileAdaptor::ProfileInfo> translate(
       const string& profile,
       const ResourceProviderInfo& resourceProviderInfo) override
   {
     return Failure("By default, disk profiles are not supported");
   }
 
-  virtual Future<hashset<string>> watch(
+  Future<hashset<string>> watch(
       const hashset<string>& knownProfiles,
       const ResourceProviderInfo& resourceProviderInfo) override
   {

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/resource_provider/storage/uri_disk_profile_adaptor.hpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/storage/uri_disk_profile_adaptor.hpp 
b/src/resource_provider/storage/uri_disk_profile_adaptor.hpp
index 2623e78..7e610d3 100644
--- a/src/resource_provider/storage/uri_disk_profile_adaptor.hpp
+++ b/src/resource_provider/storage/uri_disk_profile_adaptor.hpp
@@ -184,13 +184,13 @@ public:
 
   UriDiskProfileAdaptor(const Flags& _flags);
 
-  virtual ~UriDiskProfileAdaptor();
+  ~UriDiskProfileAdaptor() override;
 
-  virtual process::Future<DiskProfileAdaptor::ProfileInfo> translate(
+  process::Future<DiskProfileAdaptor::ProfileInfo> translate(
       const std::string& profile,
       const ResourceProviderInfo& resourceProviderInfo) override;
 
-  virtual process::Future<hashset<std::string>> watch(
+  process::Future<hashset<std::string>> watch(
       const hashset<std::string>& knownProfiles,
       const ResourceProviderInfo& resourceProviderInfo) override;
 
@@ -206,7 +206,7 @@ class UriDiskProfileAdaptorProcess :
 public:
   UriDiskProfileAdaptorProcess(const UriDiskProfileAdaptor::Flags& _flags);
 
-  virtual void initialize() override;
+  void initialize() override;
 
   process::Future<DiskProfileAdaptor::ProfileInfo> translate(
       const std::string& profile,

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/sched/sched.cpp
----------------------------------------------------------------------
diff --git a/src/sched/sched.cpp b/src/sched/sched.cpp
index baa6b0c..4de7622 100644
--- a/src/sched/sched.cpp
+++ b/src/sched/sched.cpp
@@ -232,13 +232,13 @@ public:
     LOG(INFO) << "Version: " << MESOS_VERSION;
   }
 
-  virtual ~SchedulerProcess()
+  ~SchedulerProcess() override
   {
     delete authenticatee;
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     install<Event>(&SchedulerProcess::receive);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/scheduler/scheduler.cpp
----------------------------------------------------------------------
diff --git a/src/scheduler/scheduler.cpp b/src/scheduler/scheduler.cpp
index 238f869..4711529 100644
--- a/src/scheduler/scheduler.cpp
+++ b/src/scheduler/scheduler.cpp
@@ -210,7 +210,7 @@ public:
     }
   }
 
-  virtual ~MesosProcess()
+  ~MesosProcess() override
   {
     disconnect();
 
@@ -325,7 +325,7 @@ public:
   }
 
 protected:
-  virtual void initialize()
+  void initialize() override
   {
     // Initialize modules.
     if (flags.modules.isSome() && flags.modulesDir.isSome()) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/secret/resolver.cpp
----------------------------------------------------------------------
diff --git a/src/secret/resolver.cpp b/src/secret/resolver.cpp
index 13d45d0..6a44e90 100644
--- a/src/secret/resolver.cpp
+++ b/src/secret/resolver.cpp
@@ -44,9 +44,9 @@ class DefaultSecretResolver : public SecretResolver
 public:
   DefaultSecretResolver() {}
 
-  ~DefaultSecretResolver() {}
+  ~DefaultSecretResolver() override {}
 
-  virtual process::Future<Secret::Value> resolve(const Secret& secret) const
+  process::Future<Secret::Value> resolve(const Secret& secret) const override
   {
     if (secret.has_reference()) {
       return Failure("Default secret resolver cannot resolve references");

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/container_loggers/lib_logrotate.hpp
----------------------------------------------------------------------
diff --git a/src/slave/container_loggers/lib_logrotate.hpp 
b/src/slave/container_loggers/lib_logrotate.hpp
index d0abaa4..2a2cd37 100644
--- a/src/slave/container_loggers/lib_logrotate.hpp
+++ b/src/slave/container_loggers/lib_logrotate.hpp
@@ -192,12 +192,12 @@ class LogrotateContainerLogger : public 
mesos::slave::ContainerLogger
 public:
   LogrotateContainerLogger(const Flags& _flags);
 
-  virtual ~LogrotateContainerLogger();
+  ~LogrotateContainerLogger() override;
 
   // This is a noop. The logrotate container logger has nothing to initialize.
-  virtual Try<Nothing> initialize() override;
+  Try<Nothing> initialize() override;
 
-  virtual process::Future<mesos::slave::ContainerIO> prepare(
+  process::Future<mesos::slave::ContainerIO> prepare(
       const ContainerID& containerId,
       const mesos::slave::ContainerConfig& containerConfig) override;
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/container_loggers/logrotate.cpp
----------------------------------------------------------------------
diff --git a/src/slave/container_loggers/logrotate.cpp 
b/src/slave/container_loggers/logrotate.cpp
index ff02130..b989de3 100644
--- a/src/slave/container_loggers/logrotate.cpp
+++ b/src/slave/container_loggers/logrotate.cpp
@@ -63,7 +63,7 @@ public:
     buffer = new char[length];
   }
 
-  virtual ~LogrotateLoggerProcess()
+  ~LogrotateLoggerProcess() override
   {
     if (buffer != nullptr) {
       delete[] buffer;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/container_loggers/sandbox.hpp
----------------------------------------------------------------------
diff --git a/src/slave/container_loggers/sandbox.hpp 
b/src/slave/container_loggers/sandbox.hpp
index 784b118..ebc665c 100644
--- a/src/slave/container_loggers/sandbox.hpp
+++ b/src/slave/container_loggers/sandbox.hpp
@@ -52,15 +52,15 @@ class SandboxContainerLogger : public 
mesos::slave::ContainerLogger
 {
 public:
   SandboxContainerLogger();
-  virtual ~SandboxContainerLogger();
+  ~SandboxContainerLogger() override;
 
   // This is a noop. The sandbox container logger has nothing to initialize.
-  virtual Try<Nothing> initialize() override;
+  Try<Nothing> initialize() override;
 
   // Tells the subprocess to redirect the container's stdout and
   // stderr to separate "stdout" and "stderr" files in the sandbox.
   // The `path`, `argv`, and `environment` are not changed.
-  virtual process::Future<mesos::slave::ContainerIO> prepare(
+  process::Future<mesos::slave::ContainerIO> prepare(
       const ContainerID& containerId,
       const mesos::slave::ContainerConfig& containerConfig) override;
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/composing.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/composing.cpp 
b/src/slave/containerizer/composing.cpp
index 1180eb4..5216458 100644
--- a/src/slave/containerizer/composing.cpp
+++ b/src/slave/containerizer/composing.cpp
@@ -58,7 +58,7 @@ public:
     : ProcessBase(process::ID::generate("composing-containerizer")),
       containerizers_(containerizers) {}
 
-  virtual ~ComposingContainerizerProcess();
+  ~ComposingContainerizerProcess() override;
 
   Future<Nothing> recover(
       const Option<state::SlaveState>& state);

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/composing.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/composing.hpp 
b/src/slave/containerizer/composing.hpp
index 15b78a9..0f838fa 100644
--- a/src/slave/containerizer/composing.hpp
+++ b/src/slave/containerizer/composing.hpp
@@ -49,46 +49,46 @@ public:
   ComposingContainerizer(
       const std::vector<Containerizer*>& containerizers);
 
-  virtual ~ComposingContainerizer();
+  ~ComposingContainerizer() override;
 
-  virtual process::Future<Nothing> recover(
-      const Option<state::SlaveState>& state);
+  process::Future<Nothing> recover(
+      const Option<state::SlaveState>& state) override;
 
-  virtual process::Future<Containerizer::LaunchResult> launch(
+  process::Future<Containerizer::LaunchResult> launch(
       const ContainerID& containerId,
       const mesos::slave::ContainerConfig& containerConfig,
       const std::map<std::string, std::string>& environment,
-      const Option<std::string>& pidCheckpointPath);
+      const Option<std::string>& pidCheckpointPath) override;
 
-  virtual process::Future<process::http::Connection> attach(
-      const ContainerID& containerId);
+  process::Future<process::http::Connection> attach(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> update(
+  process::Future<Nothing> update(
       const ContainerID& containerId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual process::Future<ResourceStatistics> usage(
-      const ContainerID& containerId);
+  process::Future<ResourceStatistics> usage(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<ContainerStatus> status(
-      const ContainerID& containerId);
+  process::Future<ContainerStatus> status(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerTermination>> wait(
-      const ContainerID& containerId);
+  process::Future<Option<mesos::slave::ContainerTermination>> wait(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerTermination>> destroy(
-      const ContainerID& containerId);
+  process::Future<Option<mesos::slave::ContainerTermination>> destroy(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<bool> kill(
+  process::Future<bool> kill(
       const ContainerID& containerId,
-      int signal);
+      int signal) override;
 
-  virtual process::Future<hashset<ContainerID>> containers();
+  process::Future<hashset<ContainerID>> containers() override;
 
-  virtual process::Future<Nothing> remove(const ContainerID& containerId);
+  process::Future<Nothing> remove(const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> pruneImages(
-      const std::vector<Image>& excludedImages);
+  process::Future<Nothing> pruneImages(
+      const std::vector<Image>& excludedImages) override;
 
 private:
   ComposingContainerizerProcess* process;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/docker.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.hpp 
b/src/slave/containerizer/docker.hpp
index 438d96a..ca41f3b 100644
--- a/src/slave/containerizer/docker.hpp
+++ b/src/slave/containerizer/docker.hpp
@@ -84,37 +84,37 @@ public:
   DockerContainerizer(
       const process::Owned<DockerContainerizerProcess>& _process);
 
-  virtual ~DockerContainerizer();
+  ~DockerContainerizer() override;
 
-  virtual process::Future<Nothing> recover(
-      const Option<state::SlaveState>& state);
+  process::Future<Nothing> recover(
+      const Option<state::SlaveState>& state) override;
 
-  virtual process::Future<Containerizer::LaunchResult> launch(
+  process::Future<Containerizer::LaunchResult> launch(
       const ContainerID& containerId,
       const mesos::slave::ContainerConfig& containerConfig,
       const std::map<std::string, std::string>& environment,
-      const Option<std::string>& pidCheckpointPath);
+      const Option<std::string>& pidCheckpointPath) override;
 
-  virtual process::Future<Nothing> update(
+  process::Future<Nothing> update(
       const ContainerID& containerId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual process::Future<ResourceStatistics> usage(
-      const ContainerID& containerId);
+  process::Future<ResourceStatistics> usage(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<ContainerStatus> status(
-      const ContainerID& containerId);
+  process::Future<ContainerStatus> status(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerTermination>> wait(
-      const ContainerID& containerId);
+  process::Future<Option<mesos::slave::ContainerTermination>> wait(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerTermination>> destroy(
-      const ContainerID& containerId);
+  process::Future<Option<mesos::slave::ContainerTermination>> destroy(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<hashset<ContainerID>> containers();
+  process::Future<hashset<ContainerID>> containers() override;
 
-  virtual process::Future<Nothing> pruneImages(
-      const std::vector<Image>& excludedImages);
+  process::Future<Nothing> pruneImages(
+      const std::vector<Image>& excludedImages) override;
 
 private:
   process::Owned<DockerContainerizerProcess> process;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/fetcher_process.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/fetcher_process.hpp 
b/src/slave/containerizer/fetcher_process.hpp
index 56fecf2..56ed6e5 100644
--- a/src/slave/containerizer/fetcher_process.hpp
+++ b/src/slave/containerizer/fetcher_process.hpp
@@ -42,7 +42,7 @@ class FetcherProcess : public process::Process<FetcherProcess>
 {
 public:
   explicit FetcherProcess(const Flags& _flags);
-  virtual ~FetcherProcess();
+  ~FetcherProcess() override;
 
   process::Future<Nothing> fetch(
       const ContainerID& containerId,

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/mesos/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.hpp 
b/src/slave/containerizer/mesos/containerizer.hpp
index c814d8f..7711d46 100644
--- a/src/slave/containerizer/mesos/containerizer.hpp
+++ b/src/slave/containerizer/mesos/containerizer.hpp
@@ -79,46 +79,46 @@ public:
       const process::Shared<Provisioner>& provisioner,
       const std::vector<process::Owned<mesos::slave::Isolator>>& isolators);
 
-  virtual ~MesosContainerizer();
+  ~MesosContainerizer() override;
 
-  virtual process::Future<Nothing> recover(
-      const Option<state::SlaveState>& state);
+  process::Future<Nothing> recover(
+      const Option<state::SlaveState>& state) override;
 
-  virtual process::Future<Containerizer::LaunchResult> launch(
+  process::Future<Containerizer::LaunchResult> launch(
       const ContainerID& containerId,
       const mesos::slave::ContainerConfig& containerConfig,
       const std::map<std::string, std::string>& environment,
-      const Option<std::string>& pidCheckpointPath);
+      const Option<std::string>& pidCheckpointPath) override;
 
-  virtual process::Future<process::http::Connection> attach(
-      const ContainerID& containerId);
+  process::Future<process::http::Connection> attach(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> update(
+  process::Future<Nothing> update(
       const ContainerID& containerId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual process::Future<ResourceStatistics> usage(
-      const ContainerID& containerId);
+  process::Future<ResourceStatistics> usage(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<ContainerStatus> status(
-      const ContainerID& containerId);
+  process::Future<ContainerStatus> status(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerTermination>> wait(
-      const ContainerID& containerId);
+  process::Future<Option<mesos::slave::ContainerTermination>> wait(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerTermination>> destroy(
-      const ContainerID& containerId);
+  process::Future<Option<mesos::slave::ContainerTermination>> destroy(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<bool> kill(
+  process::Future<bool> kill(
       const ContainerID& containerId,
-      int signal);
+      int signal) override;
 
-  virtual process::Future<hashset<ContainerID>> containers();
+  process::Future<hashset<ContainerID>> containers() override;
 
-  virtual process::Future<Nothing> remove(const ContainerID& containerId);
+  process::Future<Nothing> remove(const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> pruneImages(
-      const std::vector<Image>& excludedImages);
+  process::Future<Nothing> pruneImages(
+      const std::vector<Image>& excludedImages) override;
 
 private:
   explicit MesosContainerizer(
@@ -147,7 +147,7 @@ public:
       provisioner(_provisioner),
       isolators(_isolators) {}
 
-  virtual ~MesosContainerizerProcess() {}
+  ~MesosContainerizerProcess() override {}
 
   virtual process::Future<Nothing> recover(
       const Option<state::SlaveState>& state);

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/mesos/io/switchboard.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/io/switchboard.cpp 
b/src/slave/containerizer/mesos/io/switchboard.cpp
index 9c6b8a4..52b0e52 100644
--- a/src/slave/containerizer/mesos/io/switchboard.cpp
+++ b/src/slave/containerizer/mesos/io/switchboard.cpp
@@ -948,7 +948,7 @@ public:
       bool waitForConnection,
       Option<Duration> heartbeatInterval);
 
-  virtual void finalize();
+  void finalize() override;
 
   Future<Nothing> run();
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/mesos/io/switchboard.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/io/switchboard.hpp 
b/src/slave/containerizer/mesos/io/switchboard.hpp
index e52dfe3..b51112e 100644
--- a/src/slave/containerizer/mesos/io/switchboard.hpp
+++ b/src/slave/containerizer/mesos/io/switchboard.hpp
@@ -57,24 +57,24 @@ public:
       const Flags& flags,
       bool local);
 
-  virtual ~IOSwitchboard();
+  ~IOSwitchboard() override;
 
-  virtual bool supportsNesting();
-  virtual bool supportsStandalone();
+  bool supportsNesting() override;
+  bool supportsStandalone() override;
 
-  virtual process::Future<Nothing> recover(
+  process::Future<Nothing> recover(
     const std::vector<mesos::slave::ContainerState>& states,
-    const hashset<ContainerID>& orphans);
+    const hashset<ContainerID>& orphans) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
+  process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const mesos::slave::ContainerConfig& containerConfig);
+      const mesos::slave::ContainerConfig& containerConfig) override;
 
-  virtual process::Future<mesos::slave::ContainerLimitation> watch(
-    const ContainerID& containerId);
+  process::Future<mesos::slave::ContainerLimitation> watch(
+    const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> cleanup(
-      const ContainerID& containerId);
+  process::Future<Nothing> cleanup(
+      const ContainerID& containerId) override;
 
   // Connect to the `IOSwitchboard` associated with `containerId`.
   process::Future<process::http::Connection> connect(

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/mesos/isolator.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolator.hpp 
b/src/slave/containerizer/mesos/isolator.hpp
index d56440c..a558679 100644
--- a/src/slave/containerizer/mesos/isolator.hpp
+++ b/src/slave/containerizer/mesos/isolator.hpp
@@ -39,38 +39,38 @@ class MesosIsolator : public mesos::slave::Isolator
 {
 public:
   explicit MesosIsolator(process::Owned<MesosIsolatorProcess> process);
-  virtual ~MesosIsolator();
+  ~MesosIsolator() override;
 
-  virtual bool supportsNesting();
-  virtual bool supportsStandalone();
+  bool supportsNesting() override;
+  bool supportsStandalone() override;
 
-  virtual process::Future<Nothing> recover(
+  process::Future<Nothing> recover(
       const std::vector<mesos::slave::ContainerState>& states,
-      const hashset<ContainerID>& orphans);
+      const hashset<ContainerID>& orphans) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
+  process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const mesos::slave::ContainerConfig& containerConfig);
+      const mesos::slave::ContainerConfig& containerConfig) override;
 
-  virtual process::Future<Nothing> isolate(
+  process::Future<Nothing> isolate(
       const ContainerID& containerId,
-      pid_t pid);
+      pid_t pid) override;
 
-  virtual process::Future<mesos::slave::ContainerLimitation> watch(
-      const ContainerID& containerId);
+  process::Future<mesos::slave::ContainerLimitation> watch(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> update(
+  process::Future<Nothing> update(
       const ContainerID& containerId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual process::Future<ResourceStatistics> usage(
-      const ContainerID& containerId);
+  process::Future<ResourceStatistics> usage(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<ContainerStatus> status(
-      const ContainerID& containerId);
+  process::Future<ContainerStatus> status(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> cleanup(
-      const ContainerID& containerId);
+  process::Future<Nothing> cleanup(
+      const ContainerID& containerId) override;
 
 private:
   process::Owned<MesosIsolatorProcess> process;
@@ -80,7 +80,7 @@ private:
 class MesosIsolatorProcess : public process::Process<MesosIsolatorProcess>
 {
 public:
-  virtual ~MesosIsolatorProcess() {}
+  ~MesosIsolatorProcess() override {}
 
   virtual bool supportsNesting()
   {

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/mesos/isolators/appc/runtime.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/appc/runtime.hpp 
b/src/slave/containerizer/mesos/isolators/appc/runtime.hpp
index 2e9c7e4..b74f06d 100644
--- a/src/slave/containerizer/mesos/isolators/appc/runtime.hpp
+++ b/src/slave/containerizer/mesos/isolators/appc/runtime.hpp
@@ -31,14 +31,14 @@ class AppcRuntimeIsolatorProcess : public 
MesosIsolatorProcess
 public:
   static Try<mesos::slave::Isolator*> create(const Flags& flags);
 
-  virtual ~AppcRuntimeIsolatorProcess();
+  ~AppcRuntimeIsolatorProcess() override;
 
-  virtual bool supportsNesting();
-  virtual bool supportsStandalone();
+  bool supportsNesting() override;
+  bool supportsStandalone() override;
 
-  virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
+  process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const mesos::slave::ContainerConfig& containerConfig);
+      const mesos::slave::ContainerConfig& containerConfig) override;
 
 private:
   AppcRuntimeIsolatorProcess(const Flags& flags);

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp 
b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
index cde1ace..4a1871b 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
@@ -48,38 +48,38 @@ class CgroupsIsolatorProcess : public MesosIsolatorProcess
 public:
   static Try<mesos::slave::Isolator*> create(const Flags& flags);
 
-  virtual ~CgroupsIsolatorProcess();
+  ~CgroupsIsolatorProcess() override;
 
-  virtual bool supportsNesting();
-  virtual bool supportsStandalone();
+  bool supportsNesting() override;
+  bool supportsStandalone() override;
 
-  virtual process::Future<Nothing> recover(
+  process::Future<Nothing> recover(
       const std::vector<mesos::slave::ContainerState>& states,
-      const hashset<ContainerID>& orphans);
+      const hashset<ContainerID>& orphans) override;
 
-  virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
+  process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const mesos::slave::ContainerConfig& containerConfig);
+      const mesos::slave::ContainerConfig& containerConfig) override;
 
-  virtual process::Future<Nothing> isolate(
+  process::Future<Nothing> isolate(
       const ContainerID& containerId,
-      pid_t pid);
+      pid_t pid) override;
 
-  virtual process::Future<mesos::slave::ContainerLimitation> watch(
-      const ContainerID& containerId);
+  process::Future<mesos::slave::ContainerLimitation> watch(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> update(
+  process::Future<Nothing> update(
       const ContainerID& containerId,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual process::Future<ResourceStatistics> usage(
-      const ContainerID& containerId);
+  process::Future<ResourceStatistics> usage(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<ContainerStatus> status(
-      const ContainerID& containerId);
+  process::Future<ContainerStatus> status(
+      const ContainerID& containerId) override;
 
-  virtual process::Future<Nothing> cleanup(
-      const ContainerID& containerId);
+  process::Future<Nothing> cleanup(
+      const ContainerID& containerId) override;
 
 private:
   struct Info

http://git-wip-us.apache.org/repos/asf/mesos/blob/3e432d86/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp 
b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
index 5ae8253..a311ab4 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
@@ -186,7 +186,7 @@ private:
 class SubsystemProcess : public process::Process<SubsystemProcess>
 {
 public:
-  virtual ~SubsystemProcess() {}
+  ~SubsystemProcess() override {}
 
   virtual std::string name() const = 0;
 

Reply via email to