Подскажите, как будет выглядеть метод класса, через который можно обратиться к разным объектам данного класса ?
т. е. допустим есть класс Dog со свойствами: name, age. Создадим два объекта класса objDog1 objDog2 и objDog3.
Как описать метод класса чтобы он взял age из objDog1 ObjDog2 сложил их и положил в age objDog3 ?
Другие языки программирования и технологии
Метод класса с++
"Создадим два объекта класса objDog1 objDog2 и objDog3"
Весело! :)
Напоминает солдатский юмор: "Эй Вы трое! Оба ко мне! "
:)
А если серьёзно, то Ваш пример не является объектно ориентированным. У Вас осталось функциональное мышление!
Ведь функция вызывается от объекта, и данные, наверное, предполагается хранить в этом объекте. Хотя конечно, можно сделать и как Вы просите, но если действительно такая концепция. Например, если действительно хотим увидеть запись типа С=A+B
Для ООП терминологии, если objDog1 ObjDog2, то просто передавайте их в качестве аргументов метода, вызванного от объекта ObjDog3.
Весело! :)
Напоминает солдатский юмор: "Эй Вы трое! Оба ко мне! "
:)
А если серьёзно, то Ваш пример не является объектно ориентированным. У Вас осталось функциональное мышление!
Ведь функция вызывается от объекта, и данные, наверное, предполагается хранить в этом объекте. Хотя конечно, можно сделать и как Вы просите, но если действительно такая концепция. Например, если действительно хотим увидеть запись типа С=A+B
Для ООП терминологии, если objDog1 ObjDog2, то просто передавайте их в качестве аргументов метода, вызванного от объекта ObjDog3.
#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;
}
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;
}
можно перегрузить оператор +, но, ведь, собаки не складываются по возрасту =).
В С++ нет встроенного механизма регистрации создаваемых объектов.
Можно объявить некоторый статический массив и записывать туда все создаваемые экземпляры и потом в статическом же методе обращаться к элементам этого массива.
Можно объявить некоторый статический массив и записывать туда все создаваемые экземпляры и потом в статическом же методе обращаться к элементам этого массива.
Похожие вопросы
- Перегрузка операций методами класса в С++. Расскажите, пожалуйста, кратко и доходчиво на каком-нибудь примере.
- Приведите, пожалуйста, пример ( адекватный для новичка ) использования методов одного класса в методах другого С++
- Разработать класс описывающий множество точек на плоскости, реализовать метод который возвращает наименьшее расстояние
- Класс Math и его метод random
- Виртуальные методы и функции
- Чем термин "метод" отличается от "события" в классах?
- Новичку по java трудно уяснить значение терминов класс, объект, метод, конструктор и тд -->
- Программисты, а как вы понимаете какой и как метод использовать, в каком классе, какой пакет и т. д.?
- Как использовать значение переменной как ИМЯ переменой или метода,,,? С#
- Java, получение названий методов и вызов методов по имени