Описание, которое вы дали, в основном верно, но ваши примеры не показывают того, что вы описываете.
Класс описывает набор элементов данных и функций-членов, которые могут вызываться для этих элементов данных:
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