山东智趣岛论坛

 找回密码
 立即注册
查看: 180|回复: 0
打印 上一主题 下一主题

C++对象常用函数及功能

[复制链接]
8888888

103

主题

105

帖子

1019万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
10197582

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主论坛元老

跳转到指定楼层
楼主
发表于 2025-2-15 11:22:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[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++中面向对象编程的核心功能,用于实现类的构造、析构、拷贝、移动、多态等特性。

回复

使用道具 举报

QQ|山东智趣岛论坛 ( 鲁ICP备2023024048号 )

GMT+8, 2025-3-1 06:43 , Processed in 0.201227 second(s), 37 queries .

Powered by Discuz! X3.3 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表