[size=16.002px]以下是C++中对象(类)常用的成员函数及其功能的表格,附带简单的案例说明: 函数名 功能描述 示例代码
构造函数 在创建对象时初始化对象的成员变量class MyClass { public: MyClass() { cout << "Constructor called!"; } }; MyClass obj;
析构函数 在对象销毁时自动调用,用于释放资源class MyClass { public: ~MyClass() { cout << "Destructor called!"; } }; { MyClass obj; }
拷贝构造函数 用一个已存在的对象初始化新对象(深拷贝或浅拷贝)class MyClass { public: MyClass(const MyClass& other) { cout << "Copy Constructor called!"; } }; MyClass obj1; MyClass obj2 = obj1;
拷贝赋值运算符 将一个对象的值赋给另一个已存在的对象class MyClass { public: MyClass& operator=(const MyClass& other) { cout << "Copy Assignment called!"; return *this; } }; MyClass obj1, obj2; obj2 = obj1;
移动构造函数 使用右值引用初始化新对象,避免不必要的拷贝class MyClass { public: MyClass(MyClass&& other) { cout << "Move Constructor called!"; } }; MyClass obj1; MyClass obj2 = std::move(obj1);
移动赋值运算符 使用右值引用赋值给已存在的对象,避免不必要的拷贝class MyClass { public: MyClass& operator=(MyClass&& other) { cout << "Move Assignment called!"; return *this; } }; MyClass obj1, obj2; obj2 = std::move(obj1);
成员函数 类的普通成员函数,用于实现类的行为class MyClass { public: void print() { cout << "Hello from member function!"; } }; MyClass obj; obj.print();
静态成员函数 属于类而不是对象的函数,可以直接通过类名调用class MyClass { public: static void print() { cout << "Hello from static function!"; } }; MyClass::print();
const成员函数 承诺不修改对象状态的成员函数class MyClass { public: void print() const { cout << "Hello from const function!"; } }; const MyClass obj; obj.print();
友元函数 可以访问类的私有和保护成员的非成员函数class MyClass { private: int data; friend void printData(const MyClass& obj); }; void printData(const MyClass& obj) { cout << obj.data; }
友元类 可以访问类的私有和保护成员的另一个类class MyClass { private: int data; friend class FriendClass; }; class FriendClass { public: void printData(const MyClass& obj) { cout << obj.data; } };
运算符重载 自定义类的运算符行为class MyClass { public: int value; MyClass operator+(const MyClass& other) { return MyClass{value + other.value}; } }; MyClass a{1}, b{2}; MyClass c = a + b;
this指针 指向当前对象的指针,用于访问当前对象的成员class MyClass { public: void setValue(int value) { this->value = value; } private: int value; };
虚函数 用于实现多态,允许派生类重写基类的函数class Base { public: virtual void print() { cout << "Base class"; } }; class Derived : public Base { public: void print() override { cout << "Derived class"; } }; Base* obj = new Derived(); obj->print();
纯虚函数 定义接口,强制派生类实现该函数class Base { public: virtual void print() = 0; }; class Derived : public Base { public: void print() override { cout << "Derived class"; } }; Base* obj = new Derived(); obj->print();
override 显式标记派生类重写基类的虚函数class Base { public: virtual void print() { cout << "Base class"; } }; class Derived : public Base { public: void print() override { cout << "Derived class"; } };
final 禁止派生类重写虚函数或禁止类被继承class Base { public: virtual void print() final { cout << "Base class"; } }; class Derived : public Base { public: void print() override; // 错误:无法重写final函数 }; 示例代码:cpp
[backcolor=rgba(var(--ds-rgba-transparent))]复制
#include <iostream>#include <string>using namespace std;// 示例类class MyClass {private: int value;public: // 构造函数 MyClass(int v = 0) : value(v) { cout << "Constructor called! Value: " << value << endl; } // 析构函数 ~MyClass() { cout << "Destructor called! Value: " << value << endl; } // 拷贝构造函数 MyClass(const MyClass& other) : value(other.value) { cout << "Copy Constructor called! Value: " << value << endl; } // 拷贝赋值运算符 MyClass& operator=(const MyClass& other) { if (this != &other) { value = other.value; cout << "Copy Assignment called! Value: " << value << endl; } return *this; } // 移动构造函数 MyClass(MyClass&& other) noexcept : value(other.value) { other.value = 0; cout << "Move Constructor called! Value: " << value << endl; } // 移动赋值运算符 MyClass& operator=(MyClass&& other) noexcept { if (this != &other) { value = other.value; other.value = 0; cout << "Move Assignment called! Value: " << value << endl; } return *this; } // 成员函数 void print() const { cout << "Value: " << value << endl; } // 静态成员函数 static void staticPrint() { cout << "Hello from static function!" << endl; } // 友元函数 friend void printValue(const MyClass& obj);};// 友元函数定义void printValue(const MyClass& obj) { cout << "Friend function: Value = " << obj.value << endl;}int main() { // 构造函数 MyClass obj1(10); // 拷贝构造函数 MyClass obj2 = obj1; // 拷贝赋值运算符 MyClass obj3; obj3 = obj1; // 移动构造函数 MyClass obj4 = std::move(obj1); // 移动赋值运算符 MyClass obj5; obj5 = std::move(obj2); // 成员函数 obj3.print(); // 静态成员函数 MyClass::staticPrint(); // 友元函数 printValue(obj3); return 0;}
输出结果:
[backcolor=rgba(var(--ds-rgba-transparent))]复制
Constructor called! Value: 10Copy Constructor called! Value: 10Constructor called! Value: 0Copy Assignment called! Value: 10Move Constructor called! Value: 10Constructor called! Value: 0Move Assignment called! Value: 10Value: 10Hello from static function!Friend function: Value = 10Destructor called! Value: 0Destructor called! Value: 10Destructor called! Value: 10Destructor called! Value: 10Destructor called! Value: 0
[size=16.002px]这些函数是C++中面向对象编程的核心功能,用于实现类的构造、析构、拷贝、移动、多态等特性。
|