我一直在寻找相当一段时间来解决我的问题,但是我还没有找到任何令人满意的答案。 这个问题相当简单:当我为对象使用隐式赋值时,我应该在括号之间放置什么。C++:对象的隐式赋值
我总是习惯看到这样的事情:将分配一个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
{
}
}
但最近我发现在那里参数,给予物体的教程。 (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
{
}
};
所以我的问题是:隐式分配是如何工作的对象?我怎样才能用对象本身分配对象(例如,给m_cCPU对象一个m_cCPU2对象)。
感谢
首先,你必须认识到代码中没有分配任务。搜索“转换构造函数”。 – juanchopanza 2014-10-09 22:02:12
我不确定你的意思是“隐式赋值”,但我有一种感觉,你希望了解*复制构造*的工作原理。简而言之,有一个特殊的拷贝构造函数将一个对象的值复制到它自己的值 - 编译器会在你不提供自己的值时生成一个默认的拷贝构造函数。 – Cameron 2014-10-09 22:04:00
构造函数声明中的这个额外的'PersonalComputer ::'是多余的。 – Samer 2014-10-09 22:09:55