diff --git a/src/cpu/testers/directedtest/RubyDirectedTester.hh b/src/cpu/testers/directedtest/RubyDirectedTester.hh
index 0f51976..7408435 100644
--- a/src/cpu/testers/directedtest/RubyDirectedTester.hh
+++ b/src/cpu/testers/directedtest/RubyDirectedTester.hh
@@ -72,7 +72,7 @@
 
     MasterPort* getCpuPort(int idx);
 
-    virtual void init();
+    void init() override;
 
     void wakeup();
 
diff --git a/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.hh b/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.hh
index a18f5bb..7f9ca5f 100644
--- a/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.hh
+++ b/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.hh
@@ -59,7 +59,7 @@
     typedef GarnetSyntheticTrafficParams Params;
     GarnetSyntheticTraffic(const Params *p);
 
-    virtual void init();
+    void init() override;
 
     // main simulation loop (one cycle)
     void tick();
diff --git a/src/cpu/testers/memtest/memtest.hh b/src/cpu/testers/memtest/memtest.hh
index 8e8f739..b429fed 100644
--- a/src/cpu/testers/memtest/memtest.hh
+++ b/src/cpu/testers/memtest/memtest.hh
@@ -75,7 +75,7 @@
     typedef MemTestParams Params;
     MemTest(const Params *p);
 
-    virtual void regStats();
+    void regStats() override;
 
     Port &getPort(const std::string &if_name,
                   PortID idx=InvalidPortID) override;
diff --git a/src/cpu/testers/rubytest/RubyTester.hh b/src/cpu/testers/rubytest/RubyTester.hh
index 2509aa2..3ca71f6 100644
--- a/src/cpu/testers/rubytest/RubyTester.hh
+++ b/src/cpu/testers/rubytest/RubyTester.hh
@@ -103,7 +103,7 @@
     MasterPort* getReadableCpuPort(int idx);
     MasterPort* getWritableCpuPort(int idx);
 
-    virtual void init();
+    void init() override;
 
     void wakeup();
 
diff --git a/src/dev/io_device.hh b/src/dev/io_device.hh
index 64d7aa5..8dc3f94 100644
--- a/src/dev/io_device.hh
+++ b/src/dev/io_device.hh
@@ -123,7 +123,7 @@
         return dynamic_cast<const Params *>(_params);
     }
 
-    virtual void init();
+    void init() override;
 
     Port &getPort(const std::string &if_name,
             PortID idx=InvalidPortID) override;
diff --git a/src/mem/addr_mapper.hh b/src/mem/addr_mapper.hh
index 6b47cfc..aaefded 100644
--- a/src/mem/addr_mapper.hh
+++ b/src/mem/addr_mapper.hh
@@ -65,7 +65,7 @@
     Port &getPort(const std::string &if_name,
                   PortID idx=InvalidPortID) override;
 
-    virtual void init();
+    void init() override;
 
   protected:
 
diff --git a/src/mem/bridge.hh b/src/mem/bridge.hh
index 9066403..b3fb90d 100644
--- a/src/mem/bridge.hh
+++ b/src/mem/bridge.hh
@@ -319,7 +319,7 @@
     Port &getPort(const std::string &if_name,
                   PortID idx=InvalidPortID) override;
 
-    virtual void init();
+    void init() override;
 
     typedef BridgeParams Params;
 
diff --git a/src/mem/external_master.hh b/src/mem/external_master.hh
index 42ac67c..f105054 100644
--- a/src/mem/external_master.hh
+++ b/src/mem/external_master.hh
@@ -129,7 +129,7 @@
     static void registerHandler(const std::string &handler_name,
         Handler *handler);
 
-    void init();
+    void init() override;
 
     const MasterID masterId;
 };
diff --git a/src/mem/external_slave.hh b/src/mem/external_slave.hh
index 7290d63..cfe89b9 100644
--- a/src/mem/external_slave.hh
+++ b/src/mem/external_slave.hh
@@ -135,7 +135,7 @@
     static void registerHandler(const std::string &handler_name,
         Handler *handler);
 
-    void init();
+    void init() override;
 };
 
 
diff --git a/src/mem/mem_checker_monitor.hh b/src/mem/mem_checker_monitor.hh
index 0564a81..ba15049 100644
--- a/src/mem/mem_checker_monitor.hh
+++ b/src/mem/mem_checker_monitor.hh
@@ -73,7 +73,7 @@
     Port &getPort(const std::string &if_name,
                   PortID idx=InvalidPortID) override;
 
-    virtual void init();
+    void init() override;
 
   private:
 
diff --git a/src/mem/ruby/network/MessageBuffer.hh b/src/mem/ruby/network/MessageBuffer.hh
index 4e85ac4..05821d5 100644
--- a/src/mem/ruby/network/MessageBuffer.hh
+++ b/src/mem/ruby/network/MessageBuffer.hh
@@ -128,7 +128,7 @@
         return RubyDummyPort::instance();
     }
 
-    void regStats();
+    void regStats() override;
 
     // Function for figuring out if any of the messages in the buffer need
     // to be updated with the data from the packet.
diff --git a/src/mem/ruby/network/Network.hh b/src/mem/ruby/network/Network.hh
index 4e97918..0830187 100644
--- a/src/mem/ruby/network/Network.hh
+++ b/src/mem/ruby/network/Network.hh
@@ -82,7 +82,7 @@
     { return dynamic_cast<const Params *>(_params); }
 
     virtual ~Network();
-    virtual void init();
+    void init() override;
 
     static uint32_t getNumberOfVirtualNetworks() { return m_virtual_networks; }
     int getNumNodes() const { return m_nodes; }
diff --git a/src/mem/xbar.hh b/src/mem/xbar.hh
index 0745ea5..6745150 100644
--- a/src/mem/xbar.hh
+++ b/src/mem/xbar.hh
@@ -410,13 +410,13 @@
 
     virtual ~BaseXBar();
 
-    virtual void init();
+    void init() override;
 
     /** A function used to return the port associated with this object. */
     Port &getPort(const std::string &if_name,
                   PortID idx=InvalidPortID) override;
 
-    virtual void regStats();
+    void regStats() override;
 
 };
 
