初始化与赋值的那点事。解决办法

初始化与赋值的那点事。
例子如下:
class ConstRef{
public:
ConstRef( int ii );
private:
int i;
const int ci;
int &ri;
};

ConstRef::ConstRef( int ii ){
i = ii;
ci = ii;
ri = i;
}

ConstRef::ConstRef( int ii ): i(ii), ci(ii), ri(i){}


第一种构造函数有错,而第二种可以,初始化与赋值直接的区别傻傻的不清楚,希望各位能解释下,让我明白。
c++

------解决方案--------------------
const和引用只能在初始化列表里面弄~~~
------解决方案--------------------
进入构造函数体内时,实际上变量都已经初始化完成了,构造函数内能做的只有赋值,而const类型和引用类型是不可以赋值的
------解决方案--------------------
初始化是在变量出现的时候就被赋值,是赋值的特殊形式
------解决方案--------------------
类的const成员只能被初始化,以后就不能改了
在类里面

ConstRef::ConstRef( int ii ): i(ii), ci(ii), ri(i){}//这叫初始化


ConstRef::ConstRef( int ii ){
    i = ii;
    ci = ii;
    ri = i;
}//这叫赋值

------解决方案--------------------
恩,const 成员变量只能在初始化列表初始。
------解决方案--------------------
const类型和引用必须要初始化。之后就不能修改了