Другие языки программирования и технологии

Метод класса с++

Подскажите, как будет выглядеть метод класса, через который можно обратиться к разным объектам данного класса ?
т. е. допустим есть класс Dog со свойствами: name, age. Создадим два объекта класса objDog1 objDog2 и objDog3.

Как описать метод класса чтобы он взял age из objDog1 ObjDog2 сложил их и положил в age objDog3 ?
Денис Юкса
Денис Юкса
205
"Создадим два объекта класса objDog1 objDog2 и objDog3"
Весело! :)
Напоминает солдатский юмор: "Эй Вы трое! Оба ко мне! "
:)
А если серьёзно, то Ваш пример не является объектно ориентированным. У Вас осталось функциональное мышление!
Ведь функция вызывается от объекта, и данные, наверное, предполагается хранить в этом объекте. Хотя конечно, можно сделать и как Вы просите, но если действительно такая концепция. Например, если действительно хотим увидеть запись типа С=A+B
Для ООП терминологии, если objDog1 ObjDog2, то просто передавайте их в качестве аргументов метода, вызванного от объекта ObjDog3.
KM
Karen Martirosyan
76 473
Лучший ответ
#include <iostream>

class Dog {
private:
//string name;
int age;
public:
Dog(void):age(0){}
Dog(int _age): age(_age){}
public:

inline operator int(void)const {
return age;
}

Dog& operator = (const Dog& dog) {
age = dog.age;
return *this;
}

friend Dog operator + (const Dog& a, const Dog& b) {
Dog c(a);
c.age += b.age;
return c;
}
};

int main(void){
Dog a(10), b(20);
Dog c = a + b;
std::cout << c << std::endl;
return 0;
}
можно перегрузить оператор +, но, ведь, собаки не складываются по возрасту =).
В С++ нет встроенного механизма регистрации создаваемых объектов.
Можно объявить некоторый статический массив и записывать туда все создаваемые экземпляры и потом в статическом же методе обращаться к элементам этого массива.