可能重复:
What's the point of OOP?
使用面向对象的编程比使用面向函数更有优势。
作为一个简单的例子考虑:
struct vector_t {
int x, y, z;
}
void setVector(vector_t *vector, int _x, int _y, it _z) {
vector->x = _x;
vector->y = _y;
vector->z = _z;
}
vector_t addVector(vector_t* vec1, vector_t* vec2) {
vector_t vec3;
vec3.x = vec1->x + vec2->x;
// and so on...
return vec3;
}
现在,我对面向对象编程并不十分熟悉,但上述内容将转换为OOP:
class vector_t {
private:
int x, y, z;
public:
void set(int _x, int _y, int _z) { ... };
int getX() { return x; }
// ...
void addVector(vector_t *vec) { ... };
// ...
};
我的问题是这个?是什么让第二个代码示例在现代编程中首先优先于第一个?有哪些优点和缺点?
答案 0 :(得分:3)
您的第一个代码段实际上是一个穷人在非OO语言中的OO实现的示例。您正在定义抽象数据类型(vector_t
)及其上允许的所有操作(setVector
,addVector
等),但您并未将所有数据和操作封装到单个逻辑单元(即一个类)。如果您想要或需要使用C而不是C ++但仍希望获得OOP的一些好处,这可能很有用。
由于您已经在两个示例中都在进行OOP,我认为第二个代码段更好的原因应该是显而易见的。