this(this) / opAssign
    Namespace 
    rswhite4 at googlemail.com
       
    Thu Jan 10 15:03:29 PST 2013
    
    
  
Is it expected behaviour that this code compiles and prints:
this(this)
this(this)
?
[code]
import std.stdio;
static if (!is(typeof(writeln)))
	alias writefln writeln;
struct vec2f {
public:
	float x, y;
	
	this(this) {
		writeln("this(this)");
	}
}
void main()
{
	vec2f v1 = vec2f(0, 1);
	vec2f v2 = vec2f(2, 3);
	
	v2 = v1;
	
	vec2f v3 = v2;
}
[/code]
while this code
[code]
import std.stdio;
static if (!is(typeof(writeln)))
	alias writefln writeln;
struct vec2f {
public:
	float x, y;
	
	this(this) {
		writeln("this(this)");
	}
	
	
	ref vec2f opAssign(ref const vec2f v) {
		writeln("opAssign");
		
		this.x = v.x;
		this.y = v.y;
		
		return this;
	}
}
void main()
{
	vec2f v1 = vec2f(0, 1);
	vec2f v2 = vec2f(2, 3);
	
	v2 = v1;
	
	vec2f v3 = v2;
}
[/code]
prints:
opAssign
this(this)
?
And what should I use, this(this) or opAssign? I thougth that it 
is unimportant,
but that changed my mind: http://dpaste.dzfl.pl/36ce3688
    
    
More information about the Digitalmars-d-learn
mailing list