diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py
index 1521d2a..bba2b1e 100644
--- a/.waf-tools/default-compiler-flags.py
+++ b/.waf-tools/default-compiler-flags.py
@@ -136,6 +136,7 @@
                               '-Wall',
                               '-Wextra',
                               '-Werror',
+                              '-Wnon-virtual-dtor',
                               '-Wno-error=deprecated-declarations', # Bug #3795
                               '-Wno-error=maybe-uninitialized', # Bug #1615
                               '-Wno-unused-parameter',
@@ -150,6 +151,7 @@
                               '-pedantic',
                               '-Wall',
                               '-Wextra',
+                              '-Wnon-virtual-dtor',
                               '-Wno-unused-parameter',
                               ]
         flags['LINKFLAGS'] += ['-fuse-ld=gold', '-Wl,-O1']
diff --git a/daemon/face/internal-transport.hpp b/daemon/face/internal-transport.hpp
index 6296110..67a53b3 100644
--- a/daemon/face/internal-transport.hpp
+++ b/daemon/face/internal-transport.hpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
@@ -37,6 +37,9 @@
 class InternalTransportBase
 {
 public:
+  virtual
+  ~InternalTransportBase() = default;
+
   /** \brief causes the transport to receive a link-layer packet
    */
   virtual void
diff --git a/daemon/table/name-tree-iterator.hpp b/daemon/table/name-tree-iterator.hpp
index cb0921d..6251acd 100644
--- a/daemon/table/name-tree-iterator.hpp
+++ b/daemon/table/name-tree-iterator.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -139,6 +139,9 @@
   explicit
   EnumerationImpl(const NameTree& nt);
 
+  virtual
+  ~EnumerationImpl() = default;
+
   virtual void
   advance(Iterator& i) = 0;
 
@@ -154,7 +157,7 @@
 public:
   FullEnumerationImpl(const NameTree& nt, const EntrySelector& pred);
 
-  virtual void
+  void
   advance(Iterator& i) override;
 
 private:
@@ -171,7 +174,7 @@
 public:
   PartialEnumerationImpl(const NameTree& nt, const EntrySubTreeSelector& pred);
 
-  virtual void
+  void
   advance(Iterator& i) override;
 
 private:
@@ -188,7 +191,7 @@
   PrefixMatchImpl(const NameTree& nt, const EntrySelector& pred);
 
 private:
-  virtual void
+  void
   advance(Iterator& i) override;
 
 private:
diff --git a/rib/readvertise/readvertise-policy.hpp b/rib/readvertise/readvertise-policy.hpp
index ebcc6c0..dce10b1 100644
--- a/rib/readvertise/readvertise-policy.hpp
+++ b/rib/readvertise/readvertise-policy.hpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
@@ -45,6 +45,9 @@
 class ReadvertisePolicy : noncopyable
 {
 public:
+  virtual
+  ~ReadvertisePolicy() = default;
+
   /** \brief decide whether to readvertise a route, and what prefix to readvertise
    */
   virtual ndn::optional<ReadvertiseAction>
diff --git a/tests/tools/mock-nfd-mgmt-fixture.hpp b/tests/tools/mock-nfd-mgmt-fixture.hpp
index 4eeab41..d0498e5 100644
--- a/tests/tools/mock-nfd-mgmt-fixture.hpp
+++ b/tests/tools/mock-nfd-mgmt-fixture.hpp
@@ -26,11 +26,11 @@
 #ifndef NFD_TESTS_TOOLS_MOCK_NFD_MGMT_FIXTURE_HPP
 #define NFD_TESTS_TOOLS_MOCK_NFD_MGMT_FIXTURE_HPP
 
-#include <ndn-cxx/util/dummy-client-face.hpp>
-
 #include "tests/test-common.hpp"
 #include "tests/identity-management-fixture.hpp"
 
+#include <ndn-cxx/util/dummy-client-face.hpp>
+
 namespace nfd {
 namespace tools {
 namespace tests {
@@ -56,6 +56,9 @@
     });
   }
 
+  virtual
+  ~MockNfdMgmtFixture() = default;
+
 protected: // ControlCommand
   /** \brief check the Interest is a command with specified prefix
    *  \retval nullopt last Interest is not the expected command
diff --git a/tools/ndn-autoconfig/procedure.hpp b/tools/ndn-autoconfig/procedure.hpp
index 0f65b89..67e1209 100644
--- a/tools/ndn-autoconfig/procedure.hpp
+++ b/tools/ndn-autoconfig/procedure.hpp
@@ -45,6 +45,9 @@
 public:
   Procedure(Face& face, KeyChain& keyChain);
 
+  virtual
+  ~Procedure() = default;
+
   void
   initialize(const Options& options);
 
