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

Can we define all members(including data as well as functions) of a c++ class as private?

本文关键字:函数 数据 定义 private 包括 c++ 成员      更新时间:2023-10-16

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

是否有任何方法,通过它我可以定义定义所有成员(包括数据以及函数)的c++类为私有?

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

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

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

那么,你可能想要的是:

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

可以使用好友(函数或其他类)

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; }