Как писать класс в C++? - Вопросы по С+

Вопрос Как писать класс в C++?

Регистрация
29 Сен 2013
Сообщения
89
Репутация
0
Спасибо
0
Монет
0
#include <iostream>
#include <cmath>
using namespace std;

class Point {
public:
Point() : x(0), y(0) {}
Point(const double x, const double y) : x(x), y(y) {}
double length(const Point& p)const {
return sqrt(pow(x - p.x, 2) + pow(y - p.y, 2));
}
private:
double x;
double y;
};

int main() {
Point a;
Point b(3.5, 4.9);
auto length = a.length(b);
cout << "Length: " << length << '\n';
system("pause > nul");
}
 
Регистрация
23 Окт 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
ну вот как то так
216570837_ea3b687e852d96607f3c5aa77562bac5_800.png

 
Регистрация
19 Окт 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
Ты все перепутала.
Надо не в си плюс плюс писАть класс, а в классе пИсать, плюс срать, плюс еще что-нибудь.
 
Регистрация
16 Авг 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
Обычно пишут в .h файле.

если писать реализацию методов прямо внутри класса то код этих методов будет типа встроенным, как бы вставляться прямо в код.
Лучше такие методы делать для элементарных операций, типа получить указатель, или ещё что элементарное.

class Vec3{
public:
Vec3(){x=y=z=0.f;}
float x,y,z;

float* getPtr(){ return &x; } // нормальный встроенный метод
};

В .cpp файле надо делать #include "файл с классом".

Может такое быть что в методах класса используются сложные вещи (которые требуют подключения других .h файлов). Тогда реализацию методов делают в отдельном .cpp файле, чтобы потом не мучится с повсеместным указанием ненужных #include и долгой компиляцией.

class CWidget{
public:
...
void Update();
};

...далее в .cpp файле

void CWidget::Update()
{
SuperType * object = MegaLibrary::GetSomething(); // вещи из другой библиотеки
// #include "MegaLibrary.h" придётся заинклюдить только в этом .cpp файле
}

Так-же поля класса можно скрыть от пользователя (инкапсуляция). Создать абстрактный класс, и отдельный класс потомком с реализацией.
 
Сверху Снизу