C++类成员指针

类成员指针时指可以指向类的非静态成员的指针,一般情况下,一个指针指向一个对象,但是成员指针指示的是类的成员,而非类的对象。指向类的静态成员的指针和普通指针没有什么区别。

类数据成员指针

与普通指针不同的是,类数据成员指针必须在*前添加classname::以表示当前定义的指针可以指向classname的成员。

class Person
{
public:
    const std::string name="1234";
};


int main(void)
{
    
    Person person1;
    Person* person2 = new Person();
    //str为指向Person对象的const string成员的指针
    //str指定了成员name,此时没有指向任何数据
    const std::string Person::*str = &Person::name;
    //使用对象实例解引用成员指针
    std::cout<< person1.*str <<std::endl;
    std::cout << person2->*str << std::endl;
    system("pause");
    return 0;
}

类成员函数指针

我们也可以定义指向类的成员函数的指针,和指向数据成员的指针一样,我们使用classname::*的形式声明一个指向成员函数的指针。

class Person
{
public:
    const std::string name="1234";
    bool testFunc(int height)
    {
        std::cout << height << std::endl;
        return true;
    };
};


int main(void)
{
    
    bool (Person::*func)(int height)=&Person::testFunc;
    Person person1;
    (person1.*func)(10);
    Person* person2 = new Person();
    (person2->*func)(20);
    system("pause");
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,149评论 1 51
  • 3. 类设计者工具 3.1 拷贝控制 五种函数拷贝构造函数拷贝赋值运算符移动构造函数移动赋值运算符析构函数拷贝和移...
    王侦阅读 5,916评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,814评论 1 32
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 7,975评论 0 3
  • 腑视明明是一种居高临下的姿态,却只是看到自身的更低处,以自欺欺人的方式来掩盖自己的自卑。仰视虽说是谦虚敬仰的表现,...
    太阳_92阅读 3,408评论 0 1