Sponsored Content
Top Forums Programming c++ assignment operator overloading Post 302481656 by Corona688 on Saturday 18th of December 2010 09:19:13 PM
Old 12-18-2010
Since the class doesn't know how much memory is allocated to mem, you can't. You have to store the size somewhere.

I'd do it like this:

Code:
#include <stdio.h>
#include <string.h>

class A {
public:
   int * mem;
   int size;
   A(int isize=0) : mem(NULL), size(0) {
      if(isize > 0)
      {
        mem=new int[isize];
        size=isize;
      }
   }

   A &operator=(const A &o)
   {
      if(size > 0) // Free existing memory
      {
         delete mem;
         size=0;
      }

      if(o.size > 0) // Copy other memory if it exists
      {
         mem = new int[o.size];
         size=o.size;
         memcpy(mem, o.mem, o.size * sizeof(int));
      }

      return(*this);
   }

  ~A() {
     if (mem!=NULL)
     {
       printf("Freeing %p\n", mem);
       delete mem;
     }
   }
};

int main(void)
{
    A a(100), b;

    b=a;
}


Last edited by Corona688; 12-18-2010 at 10:39 PM.. Reason: forgot the return statement
 

10 More Discussions You Might Find Interesting

1. Programming

what is diff b/w copy constructor and overloaded assignment operator

Helo i m new in c++. i m confuse about what is exact difference b/w copy constructor and overloaded assignment operator. Regards, Amit (3 Replies)
Discussion started by: amitpansuria
3 Replies

2. Shell Programming and Scripting

scalar variable assignment in perl + { operator

When reading over some perl code in a software document, I came across an assignment statement like this $PATH = ${PROJECT}/......./.... In this particular form of scalar variable assignment, what does the curly braces operators do ? Also, what is the benefit in doing scalar assignment this... (3 Replies)
Discussion started by: JamesGoh
3 Replies

3. AIX

xlC compilation error when dealing with operator overloading

Hi, I have a piece of C++ code that can be compiled using g++, but reports an error when compiled with xlC: xlC -DHAVE_CONFIG_H -I../SRC -I../include -DNoChange -DSPRNG_MPI -q64 -DLONG64=long -I/usr/lpp/ppe.poe/include -DLONG64=long -c -o libsprng_a-bignum.o bignum.cpp "bignum.cpp",... (1 Reply)
Discussion started by: luop0812
1 Replies

4. Programming

C++ Optr Overloading

Hi All, In C++ one operator can be overloaded, but it can't be overloaded by it's own derieved class Please let me know operator. Thanks, Naga:cool: (1 Reply)
Discussion started by: Nagapandi
1 Replies

5. Programming

Delete operator overloading with multiple arguments.

Hi, I have an requirement to overload the delete operator in C++, but it should also accept the sizeof() the object that is to be deleted. Actually I am trying to built a custom memory allocator and deallocator like a pool, which makes me to overload the delete operator. Small example of the... (1 Reply)
Discussion started by: kapilkumawat
1 Replies

6. UNIX for Dummies Questions & Answers

mysqld overloading cpu of VPS

Hi bros I have a VPS 512mb (Burst 2GB) with Kloxo installed and hosting few sites on it with not much traffic I am facing high cpu load for the last few days and seems mysqld is overloading the cpu Any suggestion will be appreciated Regards Rizwan Top output is as under top -... (2 Replies)
Discussion started by: rizwan65
2 Replies

7. Programming

Need to understand the overloaded assignment operator behavior

Hi, In the following code, class A { public: void operator=(const A& rhs) { if (this == &rhs) cout << "self-assigned"; } }; class B { A a; // should not be a pointer member, (i.e) A* a }; int main() { B b; b = b; // Ans: self-assigned } I am really... (5 Replies)
Discussion started by: royalibrahim
5 Replies

8. Shell Programming and Scripting

Assignment operator without operand

Does anyone know how this line in bash works? local gotbase= force= nicelevel corelimit local pid base= user= nice= bg= pid_file= local cgroup= These lines are part of the daemon function inside the "functions" file at /etc/init.d in RH. (3 Replies)
Discussion started by: Rameshck
3 Replies

9. Shell Programming and Scripting

Bash variable assignment failure/unary operator expected

I have a little code block (executing on AIX 7.1) that I cannot understand why the NOTFREE=0 does not appear to be assigned even though it goes through that block. This causes a unary operator issue. #!/bin/bash PLATFORM="AIX" NEEDSPC=3000 set -x if ; then lsvg | grep -v rootvg | while... (6 Replies)
Discussion started by: port43
6 Replies

10. Programming

C++ operator overloading error

hi, I defined my own String class and overloaded the output operator with friend ostream& operator<<(ostream& os, const myString& str); //overloads the << operator so it can be used to output values of type myString which works fine. Until I try to execute the following statement: // +... (6 Replies)
Discussion started by: milhan
6 Replies
Mojo::Asset::Memory(3pm)				User Contributed Perl Documentation				  Mojo::Asset::Memory(3pm)

NAME
Mojo::Asset::Memory - In-memory storage for HTTP 1.1 content SYNOPSIS
use Mojo::Asset::Memory; my $mem = Mojo::Asset::Memory->new; $mem->add_chunk('foo bar baz'); say $mem->slurp; DESCRIPTION
Mojo::Asset::Memory is an in-memory storage backend for HTTP 1.1 content. EVENTS
Mojo::Asset::Memory can emit the following events. "upgrade" $mem->on(upgrade => sub { my ($mem, $file) = @_; ... }); Emitted when asset gets upgraded to a Mojo::Asset::File object. $mem->on(upgrade => sub { my ($mem, $file) = @_; $file->tmpdir('/tmp'); }); ATTRIBUTES
Mojo::Asset::Memory inherits all attributes from Mojo::Asset and implements the following new ones. "auto_upgrade" my $upgrade = $mem->auto_upgrade; $mem = $mem->auto_upgrade(1); Try to detect if content size exceeds "max_memory_size" limit and automatically upgrade to a Mojo::Asset::File object. "max_memory_size" my $size = $mem->max_memory_size; $mem = $mem->max_memory_size(1024); Maximum size in bytes of data to keep in memory before automatically upgrading to a Mojo::Asset::File object, defaults to the value of the "MOJO_MAX_MEMORY_SIZE" environment variable or 262144. METHODS
Mojo::Asset::Memory inherits all methods from Mojo::Asset and implements the following new ones. "new" my $mem = Mojo::Asset::Memory->new; Construct a new Mojo::Asset::Memory object. "add_chunk" $mem = $mem->add_chunk('foo bar baz'); my $file = $mem->add_chunk('abc' x 262144); Add chunk of data and upgrade to Mojo::Asset::File object if necessary. "contains" my $position = $mem->contains('bar'); Check if asset contains a specific string. "get_chunk" my $chunk = $mem->get_chunk($offset); Get chunk of data starting from a specific position. "move_to" $mem = $mem->move_to('/home/sri/foo.txt'); Move asset data into a specific file. "size" my $size = $mem->size; Size of asset data in bytes. "slurp" my $string = mem->slurp; Read all asset data at once. SEE ALSO
Mojolicious, Mojolicious::Guides, <http://mojolicio.us>. perl v5.14.2 2012-09-05 Mojo::Asset::Memory(3pm)
All times are GMT -4. The time now is 08:41 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy