自作クラスのoperator=()で、メンバ変数を全てコピーしたいのですが、

void operator = (const T& t) {
a = t.a;
b = t.b;
}

のように1つひとつコピーだと、メンバ変数が増えたときにコード量が多くなってしまいます。
thisを使って一気にコピーしたいのですが、

void operator = (const T& t ) {
*this = t;
}

のように書くと無限ループに陥ってしまいます;
どのように記述すればよいでしょうか?

あと、
T a, b, c;
a = b = c;
のように記述したいときは、
T& operator = ( const T& t )
{
......
return *this
}

でいいですか?