On 4/24/15 9:23 AM, ref2401 wrote:
What advantages do ref params give over pointer params?

struct MyStruct {
     string str;

     this(string str) { this.str = str; }
}

void processRef(ref MyStruct ms) {
     writeln("processRef: ", ms);
}

void processPointer(MyStruct* ms) {
     writeln("processPointer: ", *ms);
}

void main(string[] args) {
     auto ms = MyStruct("the ultimate answer to everythin is the number
42");

     processRef(ms);
     processPointer(&ms);
}

A ref param is somewhat safer, because you cannot do pointer arithmetic on it. A ref will ALWAYS point at the same memory location, because it cannot be rebound.

The compiler can also take advantage of the characteristics of ref, as it does with the -dip25 switch.

-Steve

Reply via email to