> On Dec 2, 2015, at 12:00 PM, Jonathan Prescott <jprescot...@icloud.com> wrote:
> 
> In C++, “this” is a read-only (const) pointer setup during construction of 
> the instance.  Once an instance of a class is successfully created, the 
> “this” pointer is guaranteed to be non-null for the lifetime of the instance. 
>  

No. It’s not a _part of_ the instance, it’s a _pointer to_ the instance. It 
only exists as an invisible parameter passed to a method.

For example, the method foo::method(int x) is internally implemented as a 
function [with a mangled name] that takes a parameter list (foo *this, int x). 
And calling f->method(1) is exactly like calling that function with parameter 
list (f, 1). Assuming the method is non-virtual. If it’s virtual, this gets 
more complicated.

> I tried out a couple of ways of trying to modify the “this" pointer of an 
> existing class instance, and the clang and gcc compilers would not allow that 
> operation to compile.

Again, ‘this’ doesn’t belong to the instance. It’s simply a function parameter.

Here’s a simple way to call a method with a NULL ‘this’:

struct foo {
        void method() {
                printf(“this = %p\n”, this);
        }
}

foo *f = NULL;
f->method();

—Jens
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (Xcode-users@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/xcode-users/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to