{"id":485,"date":"2017-09-24T14:05:45","date_gmt":"2017-09-24T13:05:45","guid":{"rendered":"http:\/\/510245153.swh.strato-hosting.eu\/?p=485"},"modified":"2017-09-24T14:05:45","modified_gmt":"2017-09-24T13:05:45","slug":"implement-clone-for-a-derived-class","status":"publish","type":"post","link":"https:\/\/thomas-jansen.eu\/?p=485","title":{"rendered":"Implement clone for a derived class."},"content":{"rendered":"<p>In a derived class of a clonable class (implementing ICloneable) it is strongly advised<br \/>\nto implement the clone override. Obviously, this is only needed if new members have been<br \/>\nadded.<\/p>\n<p>for example:<\/p>\n<pre>class A : B\r\n{\r\n   int value1;\r\n   public override object Clone()\r\n   {\r\n      A instance = (A)base.Clone();\r\n      instance.value1 = value1;\r\n      return (instance);\r\n   }\r\n}\r\n<\/pre>\n<p>The method Clone is being called from the context of A and creates an A object. Coming from a<br \/>\nC++ background this looks weird since you would expect a class of type B to be created. After<br \/>\nthe initial Clone the extra member value1 has to be initialized as shown in the example.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In a derived class of a clonable class (implementing ICloneable) it is strongly advised to implement the clone override. Obviously, this is only needed if new members have been added. for example: class A : B { int value1; public override object Clone() { A instance = (A)base.Clone(); instance.value1 = value1; return (instance); } } [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[91],"class_list":["post-485","post","type-post","status-publish","format-standard","hentry","category-c","tag-clone"],"_links":{"self":[{"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=\/wp\/v2\/posts\/485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=485"}],"version-history":[{"count":3,"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=\/wp\/v2\/posts\/485\/revisions"}],"predecessor-version":[{"id":488,"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=\/wp\/v2\/posts\/485\/revisions\/488"}],"wp:attachment":[{"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thomas-jansen.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}