请问为什么我这个样子他不输出年龄呢?

请问为什么我这个样子不输出年龄呢?但是我把23行解开,把24行注释掉,再把36行解开,把37行注释掉就能输出年龄了呢?


#include 
#include 
using namespace std;
//成员属性设置为私有 
//1.可以自己控制读写权限
//2.对于写 可以检测数据的有效性
class Person
{
private:
    string name;//设置可读可写 
    int m_Age;//设置只读不写 
    string  lover;//二奶只写 不显示 不读 
    //都设置成私有,就要有共有的接口和他对接来修改or赋值他 
public:
    //写姓名
    void setName(string name2)
    {
        name=name2;
    }
    //读姓名 
    string getName() 
    {
       //return name;
       cout<<"姓名 "<int getAge()
    {
        m_Age=0;//年龄只读 直接写获取 不写set 直接在这里初始化了 
        return m_Age; 
    }
}; 
int main()
{
    Person p;
    p.setName("张三");
    //cout<<"姓名 "<
    p.getName();
    cout<<"年龄 "<getAge()<return 0;
}

你不输出年龄是因为输出姓名后报错了,string getName() 这个方法需要返回值,你注释了return,当然不行

 
#include <iostream>
#include <string>
using namespace std;
//成员属性设置为私有 
//1.可以自己控制读写权限
//2.对于写 可以检测数据的有效性
class Person
{
private:
    string name;//设置可读可写 
    int m_Age;//设置只读不写 
    string  lover;//二奶只写 不显示 不读 
    //都设置成私有,就要有共有的接口和他对接来修改or赋值他 
public:
    //写姓名
    void setName(string name2)
    {
        name=name2;
    }
    //读姓名 
    string getName() 
    {
        
       cout<<"姓名 "<<name<<endl;
       return name;
    }      
    int getAge()
    {
        //m_Age=0;//年龄只读 直接写获取 不写set 直接在这里初始化了      <这里不需要赋值0,整型默认是0>
        return m_Age; 
    }
}; 
int main()
{
    Person p;
    p.setName("张三");
    //cout<<"姓名 "<<p.getName()<<endl;
    p.getName();
    cout<<"年龄 "<<p.getAge()<<endl; 
    return 0;
}

你意思没有输出年龄为0吗?