MST

星途 面试题库

面试题:C++运算符重载之友元函数实现的特殊场景

假设你有一个自定义类MyClass,它包含一个私有成员变量。现在需要使用友元函数重载前置自增运算符 '++'。在重载函数中,不仅要实现自增逻辑,还要处理可能出现的溢出情况(假设变量最大值为100),请写出完整的类定义、友元函数重载代码以及测试代码。
13.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

class MyClass {
private:
    int privateVar;
public:
    MyClass(int value = 0) : privateVar(value) {}

    // 友元函数声明
    friend MyClass& operator++(MyClass& obj);

    int getValue() const {
        return privateVar;
    }
};

// 友元函数定义
MyClass& operator++(MyClass& obj) {
    if (obj.privateVar < 100) {
        ++obj.privateVar;
    } else {
        std::cerr << "溢出警告:已达到最大值100" << std::endl;
    }
    return obj;
}

// 测试代码
int main() {
    MyClass obj(99);
    std::cout << "初始值: " << obj.getValue() << std::endl;

    ++obj;
    std::cout << "自增后的值: " << obj.getValue() << std::endl;

    ++obj;

    return 0;
}