diff --git a/modules/videoio/src/cap_aravis.cpp b/modules/videoio/src/cap_aravis.cpp
index f2fc9da775..165284b917 100644
--- a/modules/videoio/src/cap_aravis.cpp
+++ b/modules/videoio/src/cap_aravis.cpp
@@ -103,11 +103,11 @@ public:
 
     virtual bool open(int);
     virtual void close();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain()
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE
     {
         return cv::CAP_ARAVIS;
     }
diff --git a/modules/videoio/src/cap_cmu.cpp b/modules/videoio/src/cap_cmu.cpp
index 90bb1ced17..a98fec8632 100644
--- a/modules/videoio/src/cap_cmu.cpp
+++ b/modules/videoio/src/cap_cmu.cpp
@@ -68,10 +68,10 @@ public:
 
     virtual bool open(int cameraId);
     virtual void close();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
 
 protected:
     C1394Camera* camera();
diff --git a/modules/videoio/src/cap_dc1394.cpp b/modules/videoio/src/cap_dc1394.cpp
index 7e593d688b..7ba1713b8f 100644
--- a/modules/videoio/src/cap_dc1394.cpp
+++ b/modules/videoio/src/cap_dc1394.cpp
@@ -1049,11 +1049,11 @@ public:
     virtual bool open( int index );
     virtual void close();
 
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain() { return CV_CAP_DC1394; } // Return the type of the capture object: CV_CAP_VFW, etc...
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_DC1394; } // Return the type of the capture object: CV_CAP_VFW, etc...
 protected:
 
     CvCaptureCAM_DC1394* captureDC1394;
diff --git a/modules/videoio/src/cap_dc1394_v2.cpp b/modules/videoio/src/cap_dc1394_v2.cpp
index 00fe6b5bbb..d3cb2f5eef 100644
--- a/modules/videoio/src/cap_dc1394_v2.cpp
+++ b/modules/videoio/src/cap_dc1394_v2.cpp
@@ -207,11 +207,11 @@ public:
     virtual bool open(int index);
     virtual void close();
 
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain() { return CV_CAP_DC1394; } // Return the type of the capture object: CV_CAP_VFW, etc...
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_DC1394; } // Return the type of the capture object: CV_CAP_VFW, etc...
 
 
 protected:
diff --git a/modules/videoio/src/cap_dshow.hpp b/modules/videoio/src/cap_dshow.hpp
index 46998c1863..f5bf80ca3b 100644
--- a/modules/videoio/src/cap_dshow.hpp
+++ b/modules/videoio/src/cap_dshow.hpp
@@ -12,8 +12,6 @@
 #ifndef _CAP_DSHOW_HPP_
 #define _CAP_DSHOW_HPP_
 
-#include "precomp.hpp"
-
 #ifdef HAVE_DSHOW
 
 class videoInput;
@@ -26,12 +24,12 @@ public:
     VideoCapture_DShow(int index);
     virtual ~VideoCapture_DShow();
 
-    virtual double getProperty(int propIdx) const;
-    virtual bool setProperty(int propIdx, double propVal);
+    virtual double getProperty(int propIdx) const CV_OVERRIDE;
+    virtual bool setProperty(int propIdx, double propVal) CV_OVERRIDE;
 
-    virtual bool grabFrame();
-    virtual bool retrieveFrame(int outputType, OutputArray frame);
-    virtual int getCaptureDomain();
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual bool retrieveFrame(int outputType, OutputArray frame) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE;
     virtual bool isOpened() const;
 protected:
     void open(int index);
diff --git a/modules/videoio/src/cap_ffmpeg.cpp b/modules/videoio/src/cap_ffmpeg.cpp
index 5439f4304a..5232ab1206 100644
--- a/modules/videoio/src/cap_ffmpeg.cpp
+++ b/modules/videoio/src/cap_ffmpeg.cpp
@@ -196,26 +196,26 @@ private:
 };
 
 
-class CvCapture_FFMPEG_proxy :
+class CvCapture_FFMPEG_proxy CV_FINAL :
     public CvCapture
 {
 public:
     CvCapture_FFMPEG_proxy() { ffmpegCapture = 0; }
     virtual ~CvCapture_FFMPEG_proxy() { close(); }
 
-    virtual double getProperty(int propId) const
+    virtual double getProperty(int propId) const CV_OVERRIDE
     {
         return ffmpegCapture ? icvGetCaptureProperty_FFMPEG_p(ffmpegCapture, propId) : 0;
     }
-    virtual bool setProperty(int propId, double value)
+    virtual bool setProperty(int propId, double value) CV_OVERRIDE
     {
         return ffmpegCapture ? icvSetCaptureProperty_FFMPEG_p(ffmpegCapture, propId, value)!=0 : false;
     }
-    virtual bool grabFrame()
+    virtual bool grabFrame() CV_OVERRIDE
     {
         return ffmpegCapture ? icvGrabFrame_FFMPEG_p(ffmpegCapture)!=0 : false;
     }
-    virtual IplImage* retrieveFrame(int)
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE
     {
         unsigned char* data = 0;
         int step=0, width=0, height=0, cn=0;
@@ -260,14 +260,14 @@ CvCapture* cvCreateFileCapture_FFMPEG_proxy(const char * filename)
     return 0;
 }
 
-class CvVideoWriter_FFMPEG_proxy :
+class CvVideoWriter_FFMPEG_proxy CV_FINAL :
     public CvVideoWriter
 {
 public:
     CvVideoWriter_FFMPEG_proxy() { ffmpegWriter = 0; }
     virtual ~CvVideoWriter_FFMPEG_proxy() { close(); }
 
-    virtual bool writeFrame( const IplImage* image )
+    virtual bool writeFrame( const IplImage* image ) CV_OVERRIDE
     {
         if(!ffmpegWriter)
             return false;
diff --git a/modules/videoio/src/cap_giganetix.cpp b/modules/videoio/src/cap_giganetix.cpp
index a71009ba09..98fba269b0 100644
--- a/modules/videoio/src/cap_giganetix.cpp
+++ b/modules/videoio/src/cap_giganetix.cpp
@@ -294,11 +294,11 @@ class CvCaptureCAM_Giganetix : public CvCapture
 
     virtual bool open( int index );
     virtual void close();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain()
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE
     {
         return CV_CAP_GIGANETIX;
     }
diff --git a/modules/videoio/src/cap_gphoto2.cpp b/modules/videoio/src/cap_gphoto2.cpp
index 33ac02914c..7a6b64d5fd 100644
--- a/modules/videoio/src/cap_gphoto2.cpp
+++ b/modules/videoio/src/cap_gphoto2.cpp
@@ -65,7 +65,7 @@ public:
         result = gPhoto2Result;
         method = methodStr;
     }
-    virtual const char * what() const throw ()
+    virtual const char * what() const throw() CV_OVERRIDE
     {
         return gp_result_as_string(result);
     }
@@ -137,14 +137,14 @@ public:
     DigitalCameraCapture();
     DigitalCameraCapture(int index);
     DigitalCameraCapture(const String &deviceName);
-    virtual ~DigitalCameraCapture();
-
-    virtual bool isOpened() const;
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual bool retrieveFrame(int, OutputArray);
-    virtual int getCaptureDomain()
+    virtual ~DigitalCameraCapture() CV_OVERRIDE;
+
+    virtual bool isOpened() const CV_OVERRIDE;
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual bool retrieveFrame(int, OutputArray) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE
     {
         return CV_CAP_GPHOTO2;
     } // Return the type of the capture object: CV_CAP_VFW, etc...
diff --git a/modules/videoio/src/cap_gstreamer.cpp b/modules/videoio/src/cap_gstreamer.cpp
index 7cbddee8bc..83d5dc2033 100644
--- a/modules/videoio/src/cap_gstreamer.cpp
+++ b/modules/videoio/src/cap_gstreamer.cpp
@@ -130,7 +130,7 @@ private:
  * \brief The CvCapture_GStreamer class
  * Use GStreamer to capture video
  */
-class CvCapture_GStreamer : public CvCapture
+class CvCapture_GStreamer CV_FINAL : public CvCapture
 {
 public:
     CvCapture_GStreamer() { init(); }
@@ -139,10 +139,10 @@ public:
     virtual bool open( int type, const char* filename );
     virtual void close();
 
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
 
 protected:
     void init();
@@ -1262,12 +1262,12 @@ class CvVideoWriter_GStreamer : public CvVideoWriter
 {
 public:
     CvVideoWriter_GStreamer() { init(); }
-    virtual ~CvVideoWriter_GStreamer() { close(); }
+    virtual ~CvVideoWriter_GStreamer() CV_OVERRIDE { close(); }
 
     virtual bool open( const char* filename, int fourcc,
                        double fps, CvSize frameSize, bool isColor );
     virtual void close();
-    virtual bool writeFrame( const IplImage* image );
+    virtual bool writeFrame( const IplImage* image ) CV_OVERRIDE;
 protected:
     void init();
     const char* filenameToMimetype(const char* filename);
diff --git a/modules/videoio/src/cap_images.cpp b/modules/videoio/src/cap_images.cpp
index 9eac7db84d..9d4d0fc0a1 100644
--- a/modules/videoio/src/cap_images.cpp
+++ b/modules/videoio/src/cap_images.cpp
@@ -74,17 +74,17 @@ public:
         grabbedInOpen = false;
     }
 
-    virtual ~CvCapture_Images()
+    virtual ~CvCapture_Images() CV_OVERRIDE
     {
         close();
     }
 
     virtual bool open(const char* _filename);
     virtual void close();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
 
 protected:
     char*  filename; // actually a printf-pattern
@@ -321,7 +321,7 @@ CvCapture* cvCreateFileCapture_Images(const char * filename)
 // image sequence writer
 //
 //
-class CvVideoWriter_Images : public CvVideoWriter
+class CvVideoWriter_Images CV_FINAL : public CvVideoWriter
 {
 public:
     CvVideoWriter_Images()
@@ -333,8 +333,8 @@ public:
 
     virtual bool open( const char* _filename );
     virtual void close();
-    virtual bool setProperty( int, double );
-    virtual bool writeFrame( const IplImage* );
+    virtual bool setProperty( int, double ); // FIXIT doesn't work: IVideoWriter interface only!
+    virtual bool writeFrame( const IplImage* ) CV_OVERRIDE;
 
 protected:
     char* filename;
diff --git a/modules/videoio/src/cap_intelperc.hpp b/modules/videoio/src/cap_intelperc.hpp
index 430a714f0e..209cd4736a 100644
--- a/modules/videoio/src/cap_intelperc.hpp
+++ b/modules/videoio/src/cap_intelperc.hpp
@@ -94,13 +94,13 @@ public:
     VideoCapture_IntelPerC();
     virtual ~VideoCapture_IntelPerC();
 
-    virtual double getProperty(int propIdx) const;
-    virtual bool setProperty(int propIdx, double propVal);
+    virtual double getProperty(int propIdx) const CV_OVERRIDE;
+    virtual bool setProperty(int propIdx, double propVal) CV_OVERRIDE;
 
-    virtual bool grabFrame();
-    virtual bool retrieveFrame(int outputType, OutputArray frame);
-    virtual int getCaptureDomain();
-    virtual bool isOpened() const;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual bool retrieveFrame(int outputType, OutputArray frame) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE;
+    virtual bool isOpened() const CV_OVERRIDE;
 protected:
     bool m_contextOpened;
 
diff --git a/modules/videoio/src/cap_libv4l.cpp b/modules/videoio/src/cap_libv4l.cpp
index f1e1c6d00c..4e1927fb7d 100644
--- a/modules/videoio/src/cap_libv4l.cpp
+++ b/modules/videoio/src/cap_libv4l.cpp
@@ -1924,10 +1924,10 @@ public:
     virtual bool open( const char* deviceName );
     virtual void close();
 
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
 protected:
 
     CvCaptureCAM_V4L* captureV4L;
diff --git a/modules/videoio/src/cap_mfx_reader.hpp b/modules/videoio/src/cap_mfx_reader.hpp
index 1d2fa8b009..cad5297b8a 100644
--- a/modules/videoio/src/cap_mfx_reader.hpp
+++ b/modules/videoio/src/cap_mfx_reader.hpp
@@ -20,12 +20,12 @@ class VideoCapture_IntelMFX : public cv::IVideoCapture
 public:
     VideoCapture_IntelMFX(const cv::String &filename);
     virtual ~VideoCapture_IntelMFX();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual bool retrieveFrame(int, cv::OutputArray out);
-    virtual bool isOpened() const;
-    virtual int getCaptureDomain();
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual bool retrieveFrame(int, cv::OutputArray out) CV_OVERRIDE;
+    virtual bool isOpened() const CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE;
 private:
     MFXVideoSession *session;
     Plugin *plugin;
diff --git a/modules/videoio/src/cap_mjpeg_decoder.cpp b/modules/videoio/src/cap_mjpeg_decoder.cpp
index cd2d841d04..f8ba6857f3 100644
--- a/modules/videoio/src/cap_mjpeg_decoder.cpp
+++ b/modules/videoio/src/cap_mjpeg_decoder.cpp
@@ -48,13 +48,13 @@ namespace cv
 class MotionJpegCapture: public IVideoCapture
 {
 public:
-    virtual ~MotionJpegCapture();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual bool retrieveFrame(int, OutputArray);
-    virtual bool isOpened() const;
-    virtual int getCaptureDomain() { return CAP_ANY; } // Return the type of the capture object: CAP_VFW, etc...
+    virtual ~MotionJpegCapture() CV_OVERRIDE;
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual bool retrieveFrame(int, OutputArray) CV_OVERRIDE;
+    virtual bool isOpened() const CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE { return CAP_ANY; } // Return the type of the capture object: CAP_VFW, etc...
     MotionJpegCapture(const String&);
 
     bool open(const String&);
diff --git a/modules/videoio/src/cap_mjpeg_encoder.cpp b/modules/videoio/src/cap_mjpeg_encoder.cpp
index 60d727039e..a518404e94 100644
--- a/modules/videoio/src/cap_mjpeg_encoder.cpp
+++ b/modules/videoio/src/cap_mjpeg_encoder.cpp
@@ -438,9 +438,9 @@ public:
         return true;
     }
 
-    bool isOpened() const { return container.isOpenedStream(); }
+    bool isOpened() const CV_OVERRIDE { return container.isOpenedStream(); }
 
-    void write(InputArray _img)
+    void write(InputArray _img) CV_OVERRIDE
     {
         Mat img = _img.getMat();
         size_t chunkPointer = container.getStreamPos();
@@ -493,7 +493,7 @@ public:
         }
     }
 
-    double getProperty(int propId) const
+    double getProperty(int propId) const CV_OVERRIDE
     {
         if( propId == VIDEOWRITER_PROP_QUALITY )
             return quality;
@@ -507,7 +507,7 @@ public:
         return 0.;
     }
 
-    bool setProperty(int propId, double value)
+    bool setProperty(int propId, double value) CV_OVERRIDE
     {
         if( propId == VIDEOWRITER_PROP_QUALITY )
         {
@@ -1186,7 +1186,7 @@ public:
         m_buffer_list.allocate_buffers(stripes_count, (height*width*2)/stripes_count);
     }
 
-    void operator()( const cv::Range& range ) const
+    void operator()( const cv::Range& range ) const CV_OVERRIDE
     {
         const int CAT_TAB_SIZE = 4096;
         unsigned code = 0;
diff --git a/modules/videoio/src/cap_msmf.cpp b/modules/videoio/src/cap_msmf.cpp
index 9232dd6431..b4e8d2b99a 100644
--- a/modules/videoio/src/cap_msmf.cpp
+++ b/modules/videoio/src/cap_msmf.cpp
@@ -3440,11 +3440,11 @@ public:
     virtual ~CvCaptureCAM_MSMF();
     virtual bool open( int index );
     virtual void close();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain() { return CV_CAP_MSMF; } // Return the type of the capture object: CV_CAP_VFW, etc...
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_MSMF; } // Return the type of the capture object: CV_CAP_VFW, etc...
 protected:
     void init();
     int index, width, height, fourcc;
diff --git a/modules/videoio/src/cap_openni.cpp b/modules/videoio/src/cap_openni.cpp
index e2f9ba6fec..5b0018f1e4 100644
--- a/modules/videoio/src/cap_openni.cpp
+++ b/modules/videoio/src/cap_openni.cpp
@@ -442,10 +442,10 @@ public:
     CvCapture_OpenNI(const char * filename);
     virtual ~CvCapture_OpenNI();
 
-    virtual double getProperty(int propIdx) const;
-    virtual bool setProperty(int probIdx, double propVal);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int outputType);
+    virtual double getProperty(int propIdx) const CV_OVERRIDE;
+    virtual bool setProperty(int probIdx, double propVal) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int outputType) CV_OVERRIDE;
 
     bool isOpened() const;
 
diff --git a/modules/videoio/src/cap_openni2.cpp b/modules/videoio/src/cap_openni2.cpp
index 200c026bf2..18fd5b66df 100644
--- a/modules/videoio/src/cap_openni2.cpp
+++ b/modules/videoio/src/cap_openni2.cpp
@@ -90,10 +90,10 @@ public:
     CvCapture_OpenNI2(const char * filename);
     virtual ~CvCapture_OpenNI2();
 
-    virtual double getProperty(int propIdx) const;
-    virtual bool setProperty(int probIdx, double propVal);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int outputType);
+    virtual double getProperty(int propIdx) const CV_OVERRIDE;
+    virtual bool setProperty(int probIdx, double propVal) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int outputType) CV_OVERRIDE;
 
     bool isOpened() const;
 
diff --git a/modules/videoio/src/cap_pvapi.cpp b/modules/videoio/src/cap_pvapi.cpp
index d64842f295..c793191e5d 100644
--- a/modules/videoio/src/cap_pvapi.cpp
+++ b/modules/videoio/src/cap_pvapi.cpp
@@ -81,11 +81,11 @@ public:
 
     virtual bool open( int index );
     virtual void close();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain()
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE
     {
         return CV_CAP_PVAPI;
     }
diff --git a/modules/videoio/src/cap_qt.cpp b/modules/videoio/src/cap_qt.cpp
index 3f9835a81b..a75ff2ac16 100644
--- a/modules/videoio/src/cap_qt.cpp
+++ b/modules/videoio/src/cap_qt.cpp
@@ -1441,11 +1441,11 @@ public:
     virtual bool open( const char* filename );
     virtual void close();
 
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain() { return CV_CAP_QT; } // Return the type of the capture object: CV_CAP_VFW, etc...
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_QT; } // Return the type of the capture object: CV_CAP_VFW, etc...
 protected:
 
     CvCapture_QT_Movie* captureQT;
diff --git a/modules/videoio/src/cap_unicap.cpp b/modules/videoio/src/cap_unicap.cpp
index 57dc55aa89..f369197a57 100644
--- a/modules/videoio/src/cap_unicap.cpp
+++ b/modules/videoio/src/cap_unicap.cpp
@@ -62,11 +62,11 @@ struct CvCapture_Unicap : public CvCapture
   virtual bool open( int index );
   virtual void close();
 
-  virtual double getProperty(int) const;
-  virtual bool setProperty(int, double);
-  virtual bool grabFrame();
-  virtual IplImage* retrieveFrame(int);
-  virtual int getCaptureDomain() { return CV_CAP_UNICAP; } // Return the type of the capture object: CV_CAP_VFW, etc...
+  virtual double getProperty(int) const CV_OVERRIDE;
+  virtual bool setProperty(int, double) CV_OVERRIDE;
+  virtual bool grabFrame() CV_OVERRIDE;
+  virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+  virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_UNICAP; } // Return the type of the capture object: CV_CAP_VFW, etc...
 
   bool shutdownDevice();
   bool initDevice();
diff --git a/modules/videoio/src/cap_v4l.cpp b/modules/videoio/src/cap_v4l.cpp
index e0db6f1ae9..9f53dceb55 100644
--- a/modules/videoio/src/cap_v4l.cpp
+++ b/modules/videoio/src/cap_v4l.cpp
@@ -265,7 +265,7 @@ struct buffer
 
 static unsigned int n_buffers = 0;
 
-struct CvCaptureCAM_V4L : public CvCapture
+struct CvCaptureCAM_V4L CV_FINAL : public CvCapture
 {
     int deviceHandle;
     int bufferIndex;
@@ -301,10 +301,10 @@ struct CvCaptureCAM_V4L : public CvCapture
    bool open(int _index);
    bool open(const char* deviceName);
 
-   virtual double getProperty(int) const;
-   virtual bool setProperty(int, double);
-   virtual bool grabFrame();
-   virtual IplImage* retrieveFrame(int);
+   virtual double getProperty(int) const CV_OVERRIDE;
+   virtual bool setProperty(int, double) CV_OVERRIDE;
+   virtual bool grabFrame() CV_OVERRIDE;
+   virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
 
    Range getRange(int property_id) const {
        switch (property_id) {
diff --git a/modules/videoio/src/cap_vfw.cpp b/modules/videoio/src/cap_vfw.cpp
index 43a977212e..0d71a0c2a5 100644
--- a/modules/videoio/src/cap_vfw.cpp
+++ b/modules/videoio/src/cap_vfw.cpp
@@ -99,11 +99,11 @@ public:
     virtual bool open( const char* filename );
     virtual void close();
 
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain() { return CV_CAP_VFW; } // Return the type of the capture object: CV_CAP_VFW, etc...
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_VFW; } // Return the type of the capture object: CV_CAP_VFW, etc...
 
 protected:
     void init();
diff --git a/modules/videoio/src/cap_ximea.cpp b/modules/videoio/src/cap_ximea.cpp
index 00ea2f7150..afc0887941 100644
--- a/modules/videoio/src/cap_ximea.cpp
+++ b/modules/videoio/src/cap_ximea.cpp
@@ -20,11 +20,11 @@ public:
     virtual bool open( int index );
     bool open( const char* deviceName );
     virtual void close();
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
-    virtual int getCaptureDomain() { return CV_CAP_XIAPI; } // Return the type of the capture object: CV_CAP_VFW, etc...
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
+    virtual int getCaptureDomain() CV_OVERRIDE { return CV_CAP_XIAPI; } // Return the type of the capture object: CV_CAP_VFW, etc...
 
 private:
     bool _open();
diff --git a/modules/videoio/src/cap_xine.cpp b/modules/videoio/src/cap_xine.cpp
index d25d007fc6..7ae4d4eb6b 100644
--- a/modules/videoio/src/cap_xine.cpp
+++ b/modules/videoio/src/cap_xine.cpp
@@ -786,10 +786,10 @@ public:
     virtual bool open( const char* filename );
     virtual void close();
 
-    virtual double getProperty(int) const;
-    virtual bool setProperty(int, double);
-    virtual bool grabFrame();
-    virtual IplImage* retrieveFrame(int);
+    virtual double getProperty(int) const CV_OVERRIDE;
+    virtual bool setProperty(int, double) CV_OVERRIDE;
+    virtual bool grabFrame() CV_OVERRIDE;
+    virtual IplImage* retrieveFrame(int) CV_OVERRIDE;
 protected:
 
     CvCaptureAVI_XINE* captureXINE;
diff --git a/modules/videoio/test/test_ffmpeg.cpp b/modules/videoio/test/test_ffmpeg.cpp
index ecfc98d856..2baeeb8b41 100644
--- a/modules/videoio/test/test_ffmpeg.cpp
+++ b/modules/videoio/test/test_ffmpeg.cpp
@@ -232,7 +232,7 @@ public:
     {
     }
 
-    virtual void operator() (const Range& range) const
+    virtual void operator() (const Range& range) const CV_OVERRIDE
     {
         for (int i = range.start; i != range.end; ++i)
         {
@@ -278,7 +278,7 @@ public:
         circle(frame, Center, i + 2, ObjectColor, 2, CV_AA);
     }
 
-    virtual void operator() (const Range& range) const
+    virtual void operator() (const Range& range) const CV_OVERRIDE
     {
         for (int j = range.start; j < range.end; ++j)
         {
@@ -320,7 +320,7 @@ public:
     {
     }
 
-    virtual void operator() (const Range& range) const
+    virtual void operator() (const Range& range) const CV_OVERRIDE
     {
         for (int i = range.start; i != range.end; ++i)
         {
@@ -342,7 +342,7 @@ public:
     {
     }
 
-    virtual void operator() (const Range& range) const
+    virtual void operator() (const Range& range) const CV_OVERRIDE
     {
         for (int j = range.start; j < range.end; ++j)
         {