To my surprise, I learned that code like this actually works:

```
class A {
    B b;
    C c = this->b.GetC();
}

```

I guess I've been conditioned into thinking that `this` is essentially akin to `self` in Python. However, it also makes sense to me that at the class level we're declaring a template for which every instance of the class is to copy, and at the "declaration" level `this` shouldn't exist yet. But, C++ never fails to surprise, and the code above seems to work.

That said, is this bad style? What exactly are the differences between the code above, and simply initializing `C` in the constructor for `A`?

```
class A {
    B b;
    C c;

    A() {
        c = this->b.GetC();
    }
}

```

(or simply `A() : c(this->b.GetC()) {}`).