我们能否定义c+的所有成员(包括数据和函数)+;课堂是私人的吗? 我试图理解C++类,然后我意识到我需要至少一个公共函数来设置任何对象中数据成员的值。 有没有方法可以定义C++类的所有成员(包括数据和函数)?私有的?< /p>
。在定义类成员时不使用任何修饰符,所有成员(包括构造函数)都将被视为私有的。以下是一段代码片段:我们能否定义c+的所有成员(包括数据和函数)+;课堂是私人的吗? 我试图理解C++类,然后我意识到我需要至少一个公共函数来设置任何对象中数据成员的值。 有没有方法可以定义C++类的所有成员(包括数据和函数)?私有的?< /p>,c++,class,oop,C++,Class,Oop,。在定义类成员时不使用任何修饰符,所有成员(包括构造函数)都将被视为私有的。以下是一段代码片段: class AllMembersPrivate { AllMembersPrivate(); //constructor int privateMemberOne; int privateMemberTwo; int PrivateMethodOne(); } 现在请注意,您将无法创建此类的实例,因为构造函数本身已声明为私有 那么,你可能想要的是: class Al
class AllMembersPrivate
{
AllMembersPrivate(); //constructor
int privateMemberOne;
int privateMemberTwo;
int PrivateMethodOne();
}
现在请注意,您将无法创建此类的实例,因为构造函数本身已声明为私有
那么,你可能想要的是:
class AllMembersPrivate
{
int privateMemberOne;
int privateMemberTwo;
int PrivateMethodOne();
public:
AllMembersPrivate(); //constructor
}
您可以与朋友(函数或其他类)
你试过了吗?你为什么要这么做?你说的“能”是什么意思?您是否认为没有任何公共内容会导致编译器错误或警告?或者你想知道这样的课程是否有用?这些都是不同的问题。@Aman…创建一个类…将所有内容都私有化(或者根本不使用任何访问说明符)。你的问题一开始就说这样的事情是毫无意义的,尽管是可能的。然后你问怎么做?什么?除非您想要强制构造只发生在被称为该类的
朋友的工厂中,否则第一个选项将是理想的。
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; }