拷贝构造函数

class CA
{
public:
CA()
{
_i = 7;
}
CA(const CA& ca)
{
this->_i = ca._i;
}
private:
int _i;
};
int _tmain(int argc, _TCHAR* argv[])
{
CA a;
CA b = a;
return 0;
}
CA b = a; 会调用拷贝构造函数;
若改为:
CA b;
b = a; 不会调用拷贝构造函数,但如果存在会调用以下函数:
CA& operator = (const CA& ca)
{
this->_i = ca._i;
return *this;
}

多继承类的指针偏移问题

例如:
struct C1
{
public:
virtual void D1() = 0;
};
class C2
{
public:
virtual void D2() = 0;
};
class C : public C1, public C2
{
public:
virtual void D1()
{
C* p = this;
C1* q = this;
C2* r = this;
}
virtual void D2()
{
C* p = this;
C1* q = this;
C2* r = this;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
C c;
c.D1();
c.D2();
return 0;
}
this指针会在转换时调整
D1中this: 0x0035f7fc     p: 0x0035f7fc     q: 0x0035f7fc     r: 0x0035f800
D2中this: 0x0035f800   p: 0x0035f7fc     q: 0x0035f7fc     r: 0x0035f800