MST

星途 面试题库

面试题:C++类成员指针的基础使用

请解释C++中类成员指针的概念,并编写一个简单的C++类,包含一个成员变量和一个成员函数,然后通过类成员指针来访问该成员变量和调用该成员函数。
30.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 类成员指针的概念

    • 在C++中,类成员指针是一种指向类的成员(包括成员变量和成员函数)的指针。与普通指针不同,类成员指针不直接指向内存地址,因为类成员不是独立存储在内存中的,而是与类的对象相关联。
    • 对于成员变量指针,它指向类的成员变量在对象中的偏移量。对于成员函数指针,它指向类成员函数的入口点,但调用时需要通过特定的对象来确定上下文。
  2. 示例代码

#include <iostream>

class MyClass {
public:
    int data;
    void printData() {
        std::cout << "Data: " << data << std::endl;
    }
};

int main() {
    MyClass obj;
    obj.data = 42;

    // 成员变量指针
    int MyClass::*dataPtr = &MyClass::data;
    std::cout << "Accessed data: " << obj.*dataPtr << std::endl;

    // 成员函数指针
    void (MyClass::*funcPtr)() = &MyClass::printData;
    (obj.*funcPtr)();

    return 0;
}

在上述代码中:

  • 首先定义了MyClass类,它有一个成员变量data和一个成员函数printData
  • main函数中,创建了MyClass的对象obj并初始化了data
  • 然后定义了指向data的成员变量指针dataPtr,并通过obj.*dataPtr访问了data的值。
  • 接着定义了指向printData的成员函数指针funcPtr,并通过(obj.*funcPtr)()调用了该成员函数。