News:

The new Release 25.03 is out! You can download binaries for Windows and many major Linux distros here .

Main Menu

virtual keyword in derived class (code style guide)

Started by ollydbg, April 16, 2013, 07:10:26 AM

Previous topic - Next topic

ollydbg

Refer to this: C++ "virtual" keyword for functions in derived classes. Is it necessary? - Stack Overflow
I think this is a good way. But currently it was not in our Coding style - CodeBlocks


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?
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

oBFusCATed

Quote from: ollydbg on April 16, 2013, 07:10:26 AM
Any comments?
Code to the style of the old code at the place you're adding the function and everything will be good :)
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

ollydbg

Quote from: oBFusCATed on April 16, 2013, 09:47:10 AM
Quote from: ollydbg on April 16, 2013, 07:10:26 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:

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)
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

oBFusCATed

Quote from: ollydbg on April 16, 2013, 11:07:03 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
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

ollydbg

I commit the change(rev 8999), because I see a lot of derived classes in C::B use "virtual" keyword for virtual functions.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.