<br />
<b>Warning</b>:  Undefined array key "global_protection_id" in <b>/home/wikitechy/public_html/interview-questions/wp-content/plugins/content-protector/inc/class-ps-rest-handler.php</b> on line <b>51</b><br />
{"id":4810,"date":"2022-08-19T12:11:08","date_gmt":"2022-08-19T12:11:08","guid":{"rendered":"https:\/\/www.wikitechy.com\/interview-questions\/?p=4810"},"modified":"2022-08-19T12:11:08","modified_gmt":"2022-08-19T12:11:08","slug":"what-is-virtual-inheritance","status":"publish","type":"post","link":"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/","title":{"rendered":"What is Virtual Inheritance ?"},"content":{"rendered":"<ul>\n<li style=\"text-align: justify;\">During multiple inheritance Virtual Inheritance is used to remove the ambiguity of base class, when a derived class inherits the same base class via other classes in C++.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-4811 aligncenter\" src=\"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png\" alt=\"\" width=\"985\" height=\"1105\" srcset=\"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png 985w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-267x300.png 267w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-913x1024.png 913w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-768x862.png 768w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-390x438.png 390w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-820x920.png 820w\" sizes=\"(max-width: 985px) 100vw, 985px\" \/><\/p>\n<ul style=\"text-align: justify;\">\n<li>For example, we consider\u00a0four classes A, B, C, and D.<\/li>\n<li>If an object of type D tries to access members of A, ambiguity arises as to which class it should resolve.<\/li>\n<li>If it is class D that C inherited or it is class D that B inherited as a result, compiler throws an error.<\/li>\n<li>We\u00a0declare that B and C inherit A virtually, to remove this ambiguity.<\/li>\n<li>It ensures that an object of type D will contain only set of member variables from A.<\/li>\n<\/ul>\n<h2 id=\"sample-code\" style=\"text-align: justify;\">Sample Code<\/h2>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <\/div> <pre class=\"language-cpp code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-cpp code-embed-code\">using namespace std;<br\/> <br\/>class A {<br\/>public:<br\/>    int x = 2;<br\/>};<br\/> <br\/>class B: public virtual A {<br\/>};<br\/> <br\/>class C: public virtual A {<br\/>};<br\/> <br\/>class D: public B, public C {<br\/>};<br\/> <br\/>int main() {<br\/>    D d = D();<br\/>    cout &lt;&lt; &quot;x : &quot; &lt;&lt; d.x &lt;&lt; endl;<br\/>}<\/code><\/pre> <\/div>\n<h2 id=\"output\" style=\"text-align: justify;\">Output<\/h2>\n<p style=\"text-align: justify;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-4812\" src=\"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-output.png\" alt=\"\" width=\"1273\" height=\"152\" srcset=\"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-output.png 1273w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-output-300x36.png 300w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-output-1024x122.png 1024w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-output-768x92.png 768w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-output-390x47.png 390w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-output-820x98.png 820w, https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence-output-1180x141.png 1180w\" sizes=\"(max-width: 1273px) 100vw, 1273px\" \/><\/p>\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>During multiple inheritance Virtual Inheritance is used to remove the ambiguity of base class, when a derived class inherits the same base class via other classes in C++. For example, we consider\u00a0four classes A, B, C, and D. If an object of type D tries to access members of A, ambiguity arises as to which [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"passster_activate_protection":false,"passster_protect_child_pages":"","passster_protection_type":"password","passster_password":"","passster_activate_overwrite_defaults":"","passster_headline":"","passster_instruction":"","passster_placeholder":"","passster_button":"","passster_id":"","passster_activate_misc_settings":"","passster_redirect_url":"","passster_hide":"no","passster_area_shortcode":"","gtb_hide_title":false,"gtb_wrap_title":false,"gtb_class_title":"","gtb_remove_headerfooter":false,"footnotes":""},"categories":[2080],"tags":[18462,2363,18458,18460,18457,18461,16204,18455,18459,18456],"class_list":["post-4810","post","type-post","status-publish","format-standard","hentry","category-cpp","tag-how-virtual-inheritance-works-in-c","tag-virtual-base-class","tag-virtual-function-in-multiple-inheritance-c","tag-virtual-inheritance-c","tag-virtual-inheritance-in-c","tag-what-is-virtual-base-class-in-inheritance","tag-what-is-virtual-inheritance","tag-what-is-virtual-inheritance-in-c","tag-what-is-virtual-inheritance-mcq","tag-when-do-we-make-a-class-virtual-in-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is Virtual Inheritance ? - Virtual Inheritance in C++ - Wikitechy<\/title>\n<meta name=\"description\" content=\"What is Virtual Inheritance ? - During multiple inheritance Virtual Inheritance is used to remove the ambiguity of base class, when a derived class inherits the same base class via other classes in C++.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is Virtual Inheritance ? - Virtual Inheritance in C++ - Wikitechy\" \/>\n<meta property=\"og:description\" content=\"What is Virtual Inheritance ? - During multiple inheritance Virtual Inheritance is used to remove the ambiguity of base class, when a derived class inherits the same base class via other classes in C++.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/\" \/>\n<meta property=\"og:site_name\" content=\"Wikitechy\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-19T12:11:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png\" \/>\n<meta name=\"author\" content=\"webmaster\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"webmaster\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/\",\"url\":\"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/\",\"name\":\"What is Virtual Inheritance ? - Virtual Inheritance in C++ - Wikitechy\",\"isPartOf\":{\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png\",\"datePublished\":\"2022-08-19T12:11:08+00:00\",\"dateModified\":\"2022-08-19T12:11:08+00:00\",\"author\":{\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/#\/schema\/person\/f785ba3ecc599133e65ab6138042a3e4\"},\"description\":\"What is Virtual Inheritance ? - During multiple inheritance Virtual Inheritance is used to remove the ambiguity of base class, when a derived class inherits the same base class via other classes in C++.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/#primaryimage\",\"url\":\"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png\",\"contentUrl\":\"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png\",\"width\":985,\"height\":1105},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/#website\",\"url\":\"https:\/\/www.wikitechy.com\/interview-questions\/\",\"name\":\"Wikitechy\",\"description\":\"Interview Questions\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wikitechy.com\/interview-questions\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/#\/schema\/person\/f785ba3ecc599133e65ab6138042a3e4\",\"name\":\"webmaster\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.wikitechy.com\/interview-questions\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/155b77fd8cdda3d0913fcb7e7ee63543b0c345d2d8f6dcebda5b0583ab61f967?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/155b77fd8cdda3d0913fcb7e7ee63543b0c345d2d8f6dcebda5b0583ab61f967?s=96&d=mm&r=g\",\"caption\":\"webmaster\"},\"sameAs\":[\"https:\/\/www.wikitechy.com\/interview-questions\"],\"url\":\"https:\/\/www.wikitechy.com\/interview-questions\/author\/webmaster\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is Virtual Inheritance ? - Virtual Inheritance in C++ - Wikitechy","description":"What is Virtual Inheritance ? - During multiple inheritance Virtual Inheritance is used to remove the ambiguity of base class, when a derived class inherits the same base class via other classes in C++.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/","og_locale":"en_US","og_type":"article","og_title":"What is Virtual Inheritance ? - Virtual Inheritance in C++ - Wikitechy","og_description":"What is Virtual Inheritance ? - During multiple inheritance Virtual Inheritance is used to remove the ambiguity of base class, when a derived class inherits the same base class via other classes in C++.","og_url":"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/","og_site_name":"Wikitechy","article_published_time":"2022-08-19T12:11:08+00:00","og_image":[{"url":"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png"}],"author":"webmaster","twitter_card":"summary_large_image","twitter_misc":{"Written by":"webmaster","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/","url":"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/","name":"What is Virtual Inheritance ? - Virtual Inheritance in C++ - Wikitechy","isPartOf":{"@id":"https:\/\/www.wikitechy.com\/interview-questions\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/#primaryimage"},"image":{"@id":"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png","datePublished":"2022-08-19T12:11:08+00:00","dateModified":"2022-08-19T12:11:08+00:00","author":{"@id":"https:\/\/www.wikitechy.com\/interview-questions\/#\/schema\/person\/f785ba3ecc599133e65ab6138042a3e4"},"description":"What is Virtual Inheritance ? - During multiple inheritance Virtual Inheritance is used to remove the ambiguity of base class, when a derived class inherits the same base class via other classes in C++.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.wikitechy.com\/interview-questions\/cpp\/what-is-virtual-inheritance\/#primaryimage","url":"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png","contentUrl":"https:\/\/www.wikitechy.com\/interview-questions\/wp-content\/uploads\/2022\/08\/virtual-inheritence.png","width":985,"height":1105},{"@type":"WebSite","@id":"https:\/\/www.wikitechy.com\/interview-questions\/#website","url":"https:\/\/www.wikitechy.com\/interview-questions\/","name":"Wikitechy","description":"Interview Questions","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wikitechy.com\/interview-questions\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.wikitechy.com\/interview-questions\/#\/schema\/person\/f785ba3ecc599133e65ab6138042a3e4","name":"webmaster","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.wikitechy.com\/interview-questions\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/155b77fd8cdda3d0913fcb7e7ee63543b0c345d2d8f6dcebda5b0583ab61f967?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/155b77fd8cdda3d0913fcb7e7ee63543b0c345d2d8f6dcebda5b0583ab61f967?s=96&d=mm&r=g","caption":"webmaster"},"sameAs":["https:\/\/www.wikitechy.com\/interview-questions"],"url":"https:\/\/www.wikitechy.com\/interview-questions\/author\/webmaster\/"}]}},"_links":{"self":[{"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/posts\/4810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/comments?post=4810"}],"version-history":[{"count":1,"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/posts\/4810\/revisions"}],"predecessor-version":[{"id":4813,"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/posts\/4810\/revisions\/4813"}],"wp:attachment":[{"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/media?parent=4810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/categories?post=4810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wikitechy.com\/interview-questions\/wp-json\/wp\/v2\/tags?post=4810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}