Даже если он студент, стоит попытаться ответить, потому что это сложный вопрос, который не так прост, по крайней мере, для нового посетителя C ++:)
Классы в C ++ служат пересечению двух парадигм проектирования,
1) ADT ::, что означает в основном новый тип, что-то вроде целых чисел 'int' или действительных чисел 'double' или даже новую концепцию, такую как 'date'.
в этом случае простой класс должен выглядеть следующим образом:
class NewDataType
{
public:
// public area. visible to the 'user' of the new data type.
.
.
.
private:
// no one can see anything in this area except you.
.
.
.
};
это самый основной каркас ADT ...
Конечно, это может быть проще, игнорируя общественную зону!
и стирание модификаторов доступа (публичный, приватный) и все это будет приватным.
но это просто ерунда. Потому что NewDataType становится бесполезным!
представьте себе int, который вы можете просто объявить, но вы НЕ МОЖЕТЕ ничего с ним сделать.
Затем вам понадобятся некоторые полезные инструменты, которые в принципе не требуются для существования NewDataType, но вы используете их, чтобы ваш тип выглядел как любой «примитивный» тип в языке.
Первый - это Конструктор. Конструктор нужен во многих местах языка.
посмотрите на int и давайте попробуем имитировать его поведение.
int x; // default constructor.
int y = 5; // copy constructor from a 'literal' or a 'constant value' in simple wrods.
int z = y; // copy constructor. from anther variable, with or without the sametype.
int n(z); // ALMOST EXACTLY THE SAME AS THE ABOVE ONE, it isredundant for 'primitive' types, but really needed for the NewDataType.
каждая строка из приведенных выше строк является объявлением, там создается переменная.
и, наконец, представьте вышеупомянутые переменные типа int в функции, эта функция называется 'fun',
int fun()
{
int y = 5;
int z = y;
int m(z);
return (m + z + y)
// the magical line.
}
Вы видите магическую строку, здесь вы можете сказать компилятору любую вещь, которую вы хотите!
после того, как вы все сделаете, и ваш NewDataType больше не будет полезен для локальной области, как в функции, вы УБИТЕ ЭТО.
классическим примером будет освобождение памяти, зарезервированной 'new'!
так что наш очень простой NewDataType становится,
class NewDataType
{
public:
// public area. visible to the 'user' of the new data type.
NewDataType()
{
myValue = new int;
*myValue = 0;
}
NewDataType(int newValue)
{
myValue = new int;
*myValue = newValue;
}
NewDataType(const NewDataType& newValue){
myValue = new int;
*myValue = newValue.(*myValue);
}
private:
// no one can see anything in this area except you.
int* myValue;
};
Теперь это очень простой каркас, чтобы начать создавать полезный класс, вы должны предоставить публичные функции.
МНОГО крошечных инструментов, которые следует учитывать при создании класса в C ++,
.
,
,
.
2) Object :: что означает в основном новый тип, но разница в том, что он принадлежит братьям, сестрам, предкам и потомкам. Посмотрите на «double» и «int» в C ++, «int» - это солнце «double», потому что каждое «int» - это «double», по крайней мере, в концепции:)