Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Blah
- {
- private:
- float x, y;
- public:
- Blah(float newX, float newY): x(newX), y(newY) {}
- const float getX() const { return x; }
- const float getY() const { return y; }
- // Первый const — неизменяемость возвращаемого объекта (он будет rvalue, если знаешь такие)
- // это запретит глупости вроде (Blah(1,2) + Blah(3,4)).x = 5
- // (хотя именно такое и без const не сработает, лол, но бывают случаи).
- // Второй — передача по константной ссылке
- // Третий — неизменяемость self-а (первого операнда).
- // Ненаписание этих констов карается.
- // Горжусь C++!
- // UPD: http://duramecho.com/ComputerInformation/WhyHowCppConst.html
- const Blah operator +(const Blah& b) const
- {
- return Blah(x + b.x, y + b.y);
- }
- const Blah operator *(const float k) const
- {
- return Blah(x * k, y * k);
- }
- // внутри оператора нужен доступ к private-мемберам
- friend const Blah operator *(const float k, const Blah& a);
- };
- const Blah operator *(const float k, const Blah& a)
- {
- return Blah(a.x * k, a.y * k);
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- Blah a(3, 4);
- Blah b = 5*a*5 + Blah(1, 2);
- printf("%f %f\n", b.getX(), b.getY());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement