{"id":221,"date":"2022-12-02T20:13:00","date_gmt":"2022-12-02T20:13:00","guid":{"rendered":"https:\/\/jassweb.com\/new22\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c\/"},"modified":"2022-12-02T20:13:00","modified_gmt":"2022-12-02T20:13:00","slug":"solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/","title":{"rendered":"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++?"},"content":{"rendered":"<h2> Introduction <\/h2>\n<p>[ad_1]<\/p>\n<p>When programming in C++, it is important to understand the difference between a class reference and a class object. A class reference is a type of pointer that points to an object of a particular class. A class object is an instance of a class that contains data and methods. When a function returns a class object, it is returning an instance of the class that can be used to access the data and methods of the class. In this article, we will discuss the differences between a class reference and a class object when a function returns a class object in C++.<\/p>\n<h2> Solution<\/h2>\n<p><\/p>\n<p>The difference between a class reference and a class object when the function returns a class object in C++ is that a class reference is a reference to an existing object, while a class object is a new instance of the class. A class reference is used to refer to an existing object, while a class object is used to create a new instance of the class. A class reference is used to access the members of an existing object, while a class object is used to create a new object and access its members. <\/p>\n<p><\/p>\n<div class=\"entry-content\" itemprop=\"text\">\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-1088640234840270\" crossorigin=\"anonymous\"><\/script><br \/>\n<script><\/p>\n<p><\/script><\/p>\n<p><\/p>\n<div id=\"answer-27824206\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"27824206\" data-parentid=\"27823911\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<pre><code>Abc &amp;obj11 = fun1();\n<\/code><\/pre>\n<p><strong>This line makes the program ill-formed;<\/strong> the C++ specification forbids temporaries to be bound to a reference that is not <code>const<\/code>. A compliant C++ compiler would emit an error to this effect. Presumably you are using the Microsoft Visual C++ compiler, which is well-known for allowing the binding of a temporary to a non-<code>const<\/code> reference in contradiction to the C++ specification.<\/p>\n<pre><code>const Abc &amp;obj11 = fun1();\n<\/code><\/pre>\n<p>This line would be well-formed, and it causes the temporary to be bound to the reference.<\/p>\n<p>In any case, when binding a temporary to a reference the temporary will have its lifetime extended to match the lifetime of the reference, so when the reference goes out of scope the temporary will also be destroyed. In other words, in terms of lifetime semantics it\u2019s equivalent to the line <code>Abc obj1 = fun1();<\/code><sup>1<\/sup>. If you are using a compiler that elides copies then all copies will be elided in both cases. If not eliding copies then the reference case will involve one less copy:<\/p>\n<ul>\n<li>Value case, the returned object will be copied into a temporary and then destroyed, and the temporary will be copied into <code>obj1<\/code> and then destroyed.<\/li>\n<li>Reference case, the returned object will be copied into a temporary and then destroyed, and the temporary will be bound to the reference.<\/li>\n<\/ul>\n<p>Note that a decent optimizing compiler will optimize away all copies as well as the reference detail completely, leaving you with identical assembly output for both of the cases in your question.<\/p>\n<p>(If you\u2019re interested, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/coliru.stacked-crooked.com\/a\/5c638216301b12c0\">here is a test case<\/a> with code slightly tweaked from that in your question. Note that no copies are made in either case unless copy elision is disabled.)<\/p>\n<hr>\n<p><sup>1<\/sup> Note that this is different from the code <code>Abc obj1; obj1 = fun1();<\/code> in your question. I intentionally changed it, because the code you have written isn\u2019t directly comparable and so it doesn\u2019t make much sense to compare them. If you rewrite it as <code>Abc obj1 = fun1();<\/code> then the two lines can be compared, because <code>Abc obj1; obj1 = fun1();<\/code> involves default-construction and then copy-assignment.<\/p>\n<\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p> <span class=\"d-none\" itemprop=\"commentCount\">9<\/span> <\/p>\n<\/div>\n<\/div>\n<p>solved What\u2019s the difference between class reference and class object when the function return class object in C++? <\/p>\n<p><script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-1088640234840270\" crossorigin=\"anonymous\"><\/script><br \/>\n<script><\/p>\n<p><\/script><\/div>\n<p>[ad_2]<\/p>\n<h1>What\u2019s the Difference Between Class Reference and Class Object When the Function Return Class Object in C++?<\/h1>\n<p>When a function returns a class object in C++, there is a difference between a class reference and a class object. A class reference is a type of pointer that points to an object of a particular class. It is used to refer to an object without having to create a new instance of the class. A class object, on the other hand, is an instance of a class. It is created when a new object is instantiated from the class.<\/p>\n<p>A class reference is a type of pointer that points to an object of a particular class. It is used to refer to an object without having to create a new instance of the class. A class reference is declared using the &#038; symbol. For example, if we have a class called MyClass, we can declare a class reference as follows:<\/p>\n<pre>MyClass &myClassRef = myClassObject;<\/pre>\n<p>In this example, myClassObject is an instance of the MyClass class. The &#038; symbol indicates that myClassRef is a reference to myClassObject. This means that myClassRef is a pointer to myClassObject and can be used to access the members of myClassObject.<\/p>\n<p>A class object, on the other hand, is an instance of a class. It is created when a new object is instantiated from the class. A class object is declared using the class name. For example, if we have a class called MyClass, we can declare a class object as follows:<\/p>\n<pre>MyClass myClassObject;<\/pre>\n<p>In this example, myClassObject is an instance of the MyClass class. This means that myClassObject is an object of type MyClass and can be used to access the members of the class.<\/p>\n<p>When a function returns a class object in C++, there is a difference between a class reference and a class object. A class reference is used to refer to an object without having to create a new instance of the class. A class object, on the other hand, is an instance of a class and is created when a new object is instantiated from the class.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction [ad_1] When programming in C++, it is important to understand the difference between a class reference and a class object. A class reference is a type of pointer that points to an object of a particular class. A class object is an instance of a class that contains data and methods. When a function &#8230; <a title=\"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/\" aria-label=\"More on [Solved] What\u2019s the difference between class reference and class object when the function return class object in C++?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324],"class_list":["post-221","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"Introduction [ad_1] When programming in C++, it is important to understand the difference between a class reference and a class object. A class reference is a type of pointer that points to an object of a particular class. A class object is an instance of a class that contains data and methods. When a function ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-02T20:13:00+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++?\",\"datePublished\":\"2022-12-02T20:13:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/\"},\"wordCount\":912,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/\",\"name\":\"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-12-02T20:13:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++? - JassWeb","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:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++? - JassWeb","og_description":"Introduction [ad_1] When programming in C++, it is important to understand the difference between a class reference and a class object. A class reference is a type of pointer that points to an object of a particular class. A class object is an instance of a class that contains data and methods. When a function ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/","og_site_name":"JassWeb","article_published_time":"2022-12-02T20:13:00+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++?","datePublished":"2022-12-02T20:13:00+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/"},"wordCount":912,"commentCount":0,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/","url":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/","name":"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-12-02T20:13:00+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-between-class-reference-and-class-object-when-the-function-return-class-object-in-c-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] What\u2019s the difference between class reference and class object when the function return class object in C++?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=221"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/221\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}