Читайте также:
|
|
Рассмотрим программу:
class Distance
{
private:
int feet;
float inches;
public:
Distance(): feet(0),inches(0.0) // конструктор без аргументов
{ }
Distance(int ft,float in): feet(ft),inches(in)
{ } // конструктор с двумя аргументами
void add_dist(Distance, Distance); // прототип
};
void Distance::add_dist(Distance dd1, Distance dd2)
{
inches = dd1.inches + dd2.inches; // сложение дюймов
feet = dd1.feet + dd2.feet; // сложение футов
}
int main()
{
Distance dist2(11, 6.25), dist1 (3, 7); // определение и инициализация
Distance dist3;
dist3.add_dist(dist1,dist2); // dist3 = dist1 + dist2
return 0;
}
Величины, которые мы хотим сложить, передаются в качестве аргументов методу add_dist(). Синтаксис передачи объектов в функцию такой же, как и для переменных стандартных типов: на месте аргумента указывается имя объекта. Поскольку add_dist() является методом класса Distance, он имеет доступ к любым (открытым и закрытым) полям любого объекта класса Distance, используя операцию точки (.), например dist1.inches и dist2.feet. Когда внутри функции происходит обращение к полям inches и feet, это означает, что на самом деле обращение происходит к полям dist3.inches и dist3.feet. Поэтому объект dist3 можно рассматривать как псевдоаргумент функции add_dist(); формально он не является аргументом, но функция имеет доступ к его полям.
Дата добавления: 2015-08-17; просмотров: 171 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Конструкторы и деструкторы. Конструкторы копирования по умолчанию. | | | Размещение в памяти членов объектов одного класса и способ создания общих полей (св-в). |