Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => Topic started by: ollydbg on April 16, 2013, 07:10:26 am

Title: virtual keyword in derived class (code style guide)
Post by: ollydbg on April 16, 2013, 07:10:26 am
Refer to this: C++ "virtual" keyword for functions in derived classes. Is it necessary? - Stack Overflow (http://stackoverflow.com/questions/4895294/c-virtual-keyword-for-functions-in-derived-classes-is-it-necessary)
I think this is a good way. But currently it was not in our Coding style - CodeBlocks (http://wiki.codeblocks.org/index.php?title=Coding_style)

Code
Index: plugins/codecompletion/parser/parserthreadedtask.h
===================================================================
--- plugins/codecompletion/parser/parserthreadedtask.h (revision 8991)
+++ plugins/codecompletion/parser/parserthreadedtask.h (working copy)
@@ -17,7 +17,7 @@
 {
 public:
     ParserThreadedTask(Parser* parser, wxMutex& parserCS);
-    int Execute();
+    virtual int Execute();
 
 private:
     Parser*  m_Parser;

Any comments?
Title: Re: virtual keyword in derived class (code style guide)
Post by: oBFusCATed on April 16, 2013, 09:47:10 am
Any comments?
Code to the style of the old code at the place you're adding the function and everything will be good :)
Title: Re: virtual keyword in derived class (code style guide)
Post by: ollydbg on April 16, 2013, 11:07:03 am
Any comments?
Code to the style of the old code at the place you're adding the function and everything will be good :)
Oh, I can't understand this sentence, can you be more specific?
I mean, the base class have the style:
Code
class cbThreadedTask
{
  public:
    /// cbThreadedTask ctor
    cbThreadedTask();

    /// cbThreadedTask dtor
    virtual ~cbThreadedTask() = 0;

    /// This function is called to tell the task to abort (check cbThreadPool::AbortAllTasks)
    void Abort();

    /// Override this function with the task's job
    /// Return value doesn't matter
    virtual int Execute() = 0;
So, it is good to preserve the "virtual" before the int Execute() in the derived class. (Although it is not necessary)
Title: Re: virtual keyword in derived class (code style guide)
Post by: oBFusCATed on April 16, 2013, 11:46:18 am
Code to the style of the old code at the place you're adding the function and everything will be good :)
I mean that it is best if you follow the style of the code you're modifying.
If the old code uses virtual ok you use it, too. If not you don't use it.
If you write new code you're free to choose what style to use.

p.s. this is my personal opinion, not a C::B rule
Title: Re: virtual keyword in derived class (code style guide)
Post by: ollydbg on April 19, 2013, 03:43:54 am
I commit the change(rev 8999), because I see a lot of derived classes in C::B use "virtual" keyword for virtual functions.