Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8485203
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 10, 20262026-06-10T20:34:35+00:00 2026-06-10T20:34:35+00:00

After upcasting a derived class’s pointer, a virtual method of the derived class is

  • 0

After upcasting a derived class’s pointer, a virtual method of the derived class is still called, which seems to me wrong, as slicing should have happened.
Could you please comment what’s wrong with this code?

class Base
{
public:
    virtual void Hello() { cout << "Hello Base" << endl; }
};

class Derived: public Base
{
public:
    void Hello() { cout << "Hello Derived" << endl; }
};

int main()
{
    Derived* der = new Derived;
    Base* base = dynamic_cast<Base*> (der);
    if (base) base->Hello();
}

output: Hello Derived

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-10T20:34:37+00:00Added an answer on June 10, 2026 at 8:34 pm

    Slicing did not happen because you didn’t work with any values of Base, just pointers to it.

    This would cause slicing:

    Base base = *der;
    

    But if you want to call a function and suppress dynamic dispatch, you can just do this:

    base->Base::Hello();
    

    The function to call is specified statically. This works with der too, of course, avoiding the middle-man.


    Your dynamic_cast is not needed here. You can implicitly upcast, because this is trivially verifiable at compile-time. You can use static_cast to downcast, but it’s up to you to make sure this is actually correct; dynamic_cast is just a checked version of that.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

After updating to Twitter Bootstrap 2.0 (which is awesome), the navigation links inside submenus
After updating from ruby-1.8.7-p352 to ruby-1.8.7-p358 via rvm , gems are still installed to
I was just working on a Wordpress site and after updating a plug-in (which
After updating the oracle the query below starts returning strange results, it should returns
After updating to php 5.3 one of our systems has developed an interesting bug.
After updating to Parsec 3.1 from 2.x, code using many1, such as word =
After updating to XCode 4.3, all my archives built using XCode 4.2 are gone.
After updating my ADT plugin to version 17 I'm getting a warning massage saying
after updating to R 2.15, the alpha channel in ggplot does not seem to
After updating to WHM/cPanel 11.30.0, PHPMailer mails are now being rejected by exim. This

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.