在C++中,类的成员函数中调用复制构造函数需要使用成员初始化列表(Member Initializer List)和初始化式(Initializer List)。
具体步骤如下:
{}
将成员初始化列表和初始化式括起来。class MyClass {
public:
MyClass() : m_number(0) {}
MyClass(const MyClass& other) : m_number(other.m_number) {} // 使用复制构造函数初始化式
int m_number;
};
在这个例子中,MyClass
类的成员函数中调用了复制构造函数。
MyClass obj1; // 使用初始化式创建对象
MyClass obj2(obj1); // 使用初始化式复制对象
如果要在类成员函数内部初始化式,可以像下面这样定义:
class MyClass {
public:
MyClass() : m_number(0) {}
MyClass(const MyClass& other) : m_number(other.m_number) {}
int m_number;
};
MyClass::MyClass(const MyClass& other)
: m_number(other.m_number)
{
// 在类成员函数中调用复制构造函数
}
在初始化式中,必须使用复制构造函数初始化式来创建新对象,而不是使用成员初始化列表。因为复制构造函数是用于创建新对象,而不是初始化现有对象。
领取专属 10元无门槛券
手把手带您无忧上云