如何从成员函数返回私有字符数组

How to return private char array from member function?

本文关键字:字符 数组 返回 函数 成员      更新时间:2023-10-16

如何从成员函数返回私有字符"n"到主函数?

#include <iostream>
using namespace std;
class TEST
{
    char n[10];
public:
    char getname()
    {
        cout<<"what's your name?:";
        cin.getline(n,10);
        return n;
    }
};
int main()
{   char name[10];
    TEST obj;
    name[10]=obj.getname();
    cout<<"Name :"<<name;
}

私人或公共无关紧要。你的问题是返回char而不是char*

我建议你使用字符串而不是字符数组。

#include <iostream>
using namespace std;
class TEST
{
    char n[10];
public:
    char* getname()
    {
        cout<<"what's your name?:";
        cin.getline(n,10);
        return n;
    }
};
int main()
{   
    char* name;
    TEST obj;
    name = obj.getname();
    cout<<"Name :"<<name;
}

如何从成员函数返回私有字符"n"到主函数?

你可以返回指针的第一个元素的字符数组是在private标签下在你的类。为此,您需要将getname函数的函数定义更改为char *getname()

另外,我想指出你在main函数中犯的一些错误。看看我的版本:

#include <iostream>
using namespace std;
class TEST
{
   char n[10];
public:
    char* getname()
    {
        cout<<"what's your name?:";
        cin.getline(n,10);
        return n;
   }  
};
int main()
{   
   TEST obj;
   char *name = obj.getname();
   cout<<"Name :"<<name;
}

但是返回类的私有成员的引用或指针并不是一个好的做法。暴露任何内部实现细节都可能违反封装。您可以定义成员函数,而不是提供对类的私有数据成员的访问,这些成员函数将对您的私有数据成员执行所需的操作。

同时,尽量避免使用using namespace