我们先从C++的构造函数开始。
构造函数
构造函数是一种特殊的成员函数,用于在对象创建时执行初始化操作。它的名称与类名相同,没有返回类型。
class Person {
public:
Person(); // 默认构造函数
Person(const char* name, int age); // 带参构造函数
private:
char* m_name;
int m_age;
};
Person::Person() {
m_name = nullptr;
m_age = 0;
}
Person::Person(const char* name, int age) {
m_name = new char[strlen(name) + 1];
strcpy(m_name, name);
m_age = age;
}
以上代码定义了两个构造函数,其中第一个是默认构造函数,用于创建一个空的Person对象,第二个是带参构造函数,用于创建一个具有名字和年龄的Person对象。示例:
Person p1; // 调用默认构造函数
Person p2("Tom", 20); // 调用带参构造函数
复制构造函数
复制构造函数是一种特殊的构造函数,用于创建一个新对象并将旧对象的内容复制到新对象中。它的名称为类名,参数为一个常量引用类型的对象。
class Person {
public:
Person(); // 默认构造函数
Person(const char* name, int age); // 带参构造函数
Person(const Person& other); // 复制构造函数
private:
char* m_name;
int m_age;
};
Person::Person(const Person& other) {
m_name = new char[strlen(other.m_name) + 1];
strcpy(m_name, other.m_name);
m_age = other.m_age;
}
以上代码定义了一个复制构造函数。示例:
Person p1("Tom", 20);
Person p2 = p1; // 调用复制构造函数
重载等号运算符
重载等号运算符是一种特殊的成员函数,用于实现对象之间的赋值。它的名称为“operator=”,参数为一个常量引用类型的对象。
class Person {
public:
Person(); // 默认构造函数
Person(const char* name, int age); // 带参构造函数
Person(const Person& other); // 复制构造函数
~Person(); // 析构函数
Person& operator=(const Person& other); // 重载等号运算符
private:
char* m_name;
int m_age;
};
Person::~Person() {
delete[] m_name;
}
Person& Person::operator=(const Person& other) {
if (this != &other) {
delete[] m_name;
m_name = new char[strlen(other.m_name) + 1];
strcpy(m_name, other.m_name);
m_age = other.m_age;
}
return *this;
}
以上代码定义了一个重载等号运算符。示例:
Person p1("Tom", 20);
Person p2("John", 25);
p2 = p1; // 调用重载等号运算符
以上就是C++构造函数、复制构造函数和重载等号运算符的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++构造函数+复制构造函数+重载等号运算符调用 - Python技术站