c++11 - Defined function returning const reference to class member and copy of the variable -


i still little bit confused returning const reference. probably, has been discussed, let's have following code did not find same:

#include <vector> #include <iostream>  struct {     int datasize;     std::vector<char> data; };  class t { public:     t();     ~t();     const a& getdata(); private:     dataa; };  t::t() : dataa{1} { }  t::~t() { }  const a& t::getdata() {     return dataa; }  void main() {     t t;     datareceivedcpy = {};     datareceivedcpy = t.getdata();      const a& datareceivedref = t.getdata();     std::cout << datareceivedref.datasize << std::endl; } 

what happens, when call

datareceivedcpy = t.getdata(); 

is correct? point of view, , copy of requested struct made, right?

on other hand,

const a& datareceivedref = t.getdata(); 

returns reference object member, correct, unless t object not destructed. right?

yes, understanding sounds correct.

datareceivedcpy = t.getdata(); 

calls copy assignment operator put copy of t.dataa in datareceivedcpy.

const a& datareceivedref = t.getdata(); 

does no copying , makes datareceivedref reference t.dataa. valid lifetime of t.


Comments

Popular posts from this blog

Spring Boot + JPA + Hibernate: Unable to locate persister -

go - Golang: panic: runtime error: invalid memory address or nil pointer dereference using bufio.Scanner -

c - double free or corruption (fasttop) -