我一直在寻找我的问题,但我还没有找到任何令人满意的答案。 问题相当简单:当我对对象使用隐式赋值时,我应该在括号之间放置什么。
我总是习惯于看到这样的东西:分配一个int,你给它一个int值
class Point2D
{
private:
int m_nX;
int m_nY;
public:
// A specific constructor
Point2D(int nX, int nY)
: m_nX(nX), m_nY(nY) // So the int m_nX gets the int-value nX
{
}
}
但是最近我找到了一个教程,其中PARAMETERS被赋予了一个对象。 (http://www.learncpp.com/cpp-tutorial/102-composition/)
class PersonalComputer
{
private:
CPU m_cCPU;
Motherboard m_cMotherboard;
RAM m_cRAM;
public:
PersonalComputer::PersonalComputer(int nCPUSpeed, char *strMotherboardModel, int nRAMSize)
: m_cCPU(nCPUSpeed), m_cMotherboard(strMotherboardModel), m_cRAM(nRAMSize)
// So the m_cCPU-object is given a parameter nCPUSpeed, and not another m_cCPU-object
{
}
};
所以我的问题是:隐式赋值如何为对象工作?如何为Object本身分配一个Object(例如,将m_cCPU2-object赋予m_cCPU-object)。
由于
答案 0 :(得分:1)
这称为初始化(不是"隐式赋值")。
对于基本类型,它意味着给予对象初始值
int nX(5);
对于类类型,它意味着使用这些参数调用类的构造函数:
Motherboard m("ABCDE");
答案 1 :(得分:0)
要在初始化列表中为另一个对象初始化一个对象,要定义复制构造函数
class CPU
{
CPU(const CPU& other)
: someSpeedVariable(other.someSpeedVariable) // Eg.
{}
}
然后你可以在其他课程中这样做。
class PC
{
PC(const CPU& cpu)
:m_cpu(cpu)
{}
CPU m_cpu;
}
我认为这就是你要问的问题?