好吧,我试图理解这一点,
所以一个类只是为对象创建一个模板。
class Bow
{
int arrows;
};
并且对象只是使用类模板创建特定项目。
Bow::Bow(arrows)
{
arrows = 20;
}
另一个问题是,公共说明符用于使数据成员可以在对象中使用,而私有说明符用于使数据成员只能在类中使用?
答案 0 :(得分:3)
您提供的描述大多是正确的,但您的示例并未显示您所描述的内容。
一个类描述了一组可以在这些数据成员上调用的数据成员和成员函数:
class Bow
{
public:
//Constructor
Bow::Bow()
{
arrows = 20;
}
Bow::Bow(int a)
{
arrows = a;
}
//member functions (in this case also called accessors/modifiers)
void getArrows(int a) const
{
return arrows;
}
void setArrows(int a)
{
arrows = a;
}
protected:
int arrows;
};
类的对象只是该类的一个实例。
//b and d are objects of the class Bow.
Bow b(3);//The constructor is automatically called here passing in 3
Bow d(4);//The constructor is automatically called here passing in 4
Bow e;//The constructor with no parameters is called and hence arrows = 20
注意:我故意避免使用您使用的单词模板,因为它用于C ++中与您的意思完全不同的东西。
了解公共/私人/受保护的说明符:
public:表示该类的对象可以直接使用这些成员。
protected:表示该类的对象无法直接使用这些成员。基于该类的派生类可以使用成员。
private:表示该类的对象无法直接使用这些成员。基于该类的派生类也不能使用这些成员。
所以在上面的例子中:
Bow b(3);
b.arrows = 10;//Compiling error arrows is not public so can't be accessed from an object
答案 1 :(得分:2)
Public表示该成员对类外的代码可见。 私有意味着成员只对类中的代码可见(或者类指定的任何东西是它的朋友)。
例如:
class X {
int priv;
public:
int pub;
do_something() {
// since do_something() is part of X, it can change both pub and priv:
priv = -1;
pub = -2;
}
};
int main() {
X x;
x.pub = 2; // allowed
x.priv = 1; // won't compile; x.priv isn't accessible.
x.do_something(); // This is no problem though.
return 0;
}
答案 2 :(得分:1)
通过使用公共说明符,您允许使用您的类的任何人直接访问该类成员。私下你禁止这样做,用户无法直接访问它。还有受保护的说明符,它允许派生类操作该类成员。
你是正确的,类就像一个对象的模板。当您创建类的实例时,您将获得“真实”的东西,即模板的实现。
答案 3 :(得分:1)
关于你的第一点,“Bow :: Bow(箭头)”是一个构造函数,它是Bow类负责初始化该类实例的方法。您对访问修饰符的理解是正确的。公共成员在课堂外可见,而私人成员则不可见。受保护的成员对从该类派生的类可见。
答案 4 :(得分:0)
对象只是使用类模板创建特定项目。
将“object”替换为“constructor”,将“item”替换为“object”。并删除“模板”这个词,因为它在C ++中有不同的含义。
公共说明符用于使对象中的数据成员可用
不完全。 public使成员可以使用对象(或类,如果它是静态成员)的 clients 。
和私有说明符用于使数据成员只能在类中使用
这基本上是正确的。