通过指针访问对象里的成员函数,但是多输出一个数字,不知道出错在那里


#include <iostream>
using namespace std;
#include <string>
class my
{
    public:
        my(string a,int b,int c):name(a),birthday(b),age(c){};
        int show();
    private:
        string name;
        int birthday;
        int age;    
};

int my::show()
{
    cout<<"name="<<name<<" "<<"birthday="<<birthday<<"  "<<"age="<<age<<endl;
}
int main()
{
    my a("赵三",1989,32);
    
    my *p=nullptr;  //定义my类的对象指针p,并初始化为空指针 
    
    p=&a;  //让指针p指向对象a
    
    cout<<p->show()<<endl;  //通过指针访问对象a的公用成员函数show() 
    cout<<(*p).show()<<endl; //同上,功能跟上面一样 
    a.show();
    return 0;
}

img

这个4917152是怎么回事呢?

show函数没写return

你show函数没有返回值,为什么要写成int类型???

谢谢,我后来改了一下,show()加上void还是一样,有返回值

最后发现show调用的是输出,cout<也是输出,是不是重复了,
把程序改成

p->show();  //前面去掉cout
(*p).show;  //前面去掉cout
这样就可以了