Вопрос назрел - сердце человека бьётся с частотой около 70 ударов в минуту ... как выразить биения через timeGetTime()
PS В смысле без таймеров
PS В смысле без таймеров
#include <vcl>
#include <iostream>
#pragma hdrstop
using namespace std;
template <class T> class A {
T c, d;
public: A () {c=0; d=0;}
A (T x, T y) {c=x; d=y;}
A<T> operator + (A<T>);
A<T> operator - (A<T>);
/*
A operator + (A); // Правильно так или как написано выше?
A operator - (A); // Правильно так или как написано выше?
*/
void set_c (T cc);
void set_d (T dd);
void show_obj ();
friend ostream& operator << (ostream &s, const A<T> &obj); // Не работает
};
// ---------------------------------------------------------------------------
int _tmain (int argc, _TCHAR* argv[]) {
system ("title Temp");
A <int> a1 (17, 9), a2 (4, 5), a3, a4 (7, 11);
a3=a1-a2+a4;
a3.show_obj();
// cout <<a3;
system ("pause");
return 0;
}
template <class T>
A<T> A<T>::operator + (A right) {
A res;
res.c=c+right.c;
res.d=d+right.d;
return res;
}
template <class T>
A<T> A<T>::operator - (A<T> right) {
A res;
res.c=c-right.c;
res.d=d-right.d;
return res;
}
template <class T>
void A<T>::set_c(T cc) {
c=cc;
}
template <class T>
void A<T>::show_obj() {
cout <<c<<", "<<d<<endl;
}
// Не работает
template <class T>
ostream& operator << (ostream &s, const A<T> &obj) {
s << obj.c <<", "<< obj.d <<endl;
return s;
}
A operator + (A);
A operator - (A);
Только хоть так, хоть так - там другие проблемы есть.
Я вижу set_c() и set_d(), но не вижу get_c() и get_d(), что странно.
если б они были, то + и - не следовало бы делать методами
#include <vcl>
#include <iostream>
#pragma hdrstop
#include "classes.h"
using namespace std;
template <class T> class B;
template <class T> ostream& operator << (ostream &s, const B<T> &obj);
template <class T> class B {
T m, n;
public: B () { m=2; n=2; }
T get_m () const {return m;}
T get_n () const {return n;}
void set_m (T mm) {m=mm;}
void set_n (T nn) {n=nn;}
};
int _tmain (int argc, _TCHAR* argv[]) {
system ("title Temp");
B <int> b1, b2, b3;
b1.set_m(12);
b1.set_n(15);
b3.set_m(b1.get_m()+b2.get_m());
b3.set_n(b1.get_n()+b2.get_n());
// b3=b1+b2; Было бы с перегрузкой оператора.
cout <<b3<<endl;
system ("pause");
return 0;
}
template <class T>
ostream& operator << (ostream &s, const B<T> &obj) {
s << obj.get_m() <<", "<< obj.get_n ();
return s;
}
приём этими операторами параметров по значению.
Я раньше думал, что передавать по ссылке нужно только тогда, когда требуется изменить переданный объект, а в остальных случаях надо по значению.
Здесь выбор между красотой в ходе применения и избыточностью в классе?Red Planet, я не имел в виду вообще их убрать. Я говорил, что им вероятно нечего делать в методах, и в качесвте свободных они более к месту. Вот и karakurt2 о том же:
хороший стиль программирования предполагает реализацию только необходимого минимума функций-членов класса.Т.е. вот такой вид
void set_c (const T &cc) {c=cc;}
void set_d (const T &dd) {d=dd;}
Что будет, если объект класса A передать по значению?
Указатель в левом объекте будет ссылаться на ту же область памяти, что и в правом, таким образом, при вызове деструктора данная память очистится два раза, так?
для инкапсуляции целиком всего интерфейса - не только самого класса, но и всякоразынх вспомогательных классов, типов, свободных функций, операторов, констант... в общем всего того, что к этому классу относится и считается интерфейсом работы с ним - придуманы пространства имён. Да-да, вовсе не "для разрешения конфликтов глобальных идентификаторов", как пишут в книжках "...для чайников" или там "... за 21 день".
а чем карвертировать?
а чем карвертировать?
и главное как узнать что это она
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
Предыдущая тема: не знаю как назвать тему :-)