我们可以将c ++类的所有成员(包括数据和函数)定义为私有吗?

时间:2014-05-02 18:23:36

标签: c++ class oop

我试图理解C ++类,然后我意识到我需要至少一个公共函数来设置任何对象中数据成员的值。

是否有任何方法可以将c ++类的所有成员(包括数据和函数)定义为私有?

2 个答案:

答案 0 :(得分:1)

当您定义类成员并且不使用任何修饰符时,所有成员(包括构造函数)将被视为私有。这是一段代码:

class AllMembersPrivate
{
    AllMembersPrivate(); //constructor
    int privateMemberOne;
    int privateMemberTwo;
    int PrivateMethodOne();
}

现在请注意,您将无法创建此类的实例,因为构造函数本身已声明为私有。

那么,你可能想要的是:

class AllMembersPrivate
{
    int privateMemberOne;
    int privateMemberTwo;
    int PrivateMethodOne();
public:
    AllMembersPrivate(); //constructor
}

答案 1 :(得分:1)

您可以与朋友(功能或其他类)

class TheClass
{
    int property;
    TheClass() :property(0) {};
    TheClass(TheClass const&) = default;
    TheClass& operator=(TheClass const&) = default;
    ~TheClass() = default;

    friend TheClass* make();
    friend void modify(TheClass*, int);
    friend int retrieve(TheClass const*);
    friend void unmake(TheClass*);
};

TheClass* make() { return new TheClass; }
void modify(TheClass* obj, int n) { obj->property = n; }
int retrieve(TheClass const* obj) { return obj->property; }
void unmake(TheClass* obj) { delete obj; }