下列运算符函数中,肯定不属于类Vector 的成员函数的是( C )。 A. Vector operator+(Vector); B. Vector operator-(Vector, Vector); C. Vector operator*(int); D. Vector operator/(Vector);
时间: 2024-03-14 21:49:51 浏览: 54
正确的是 C,因为它是一个类外的运算符函数,不属于类 `Vector` 的成员函数。
A 中的 `+` 运算符重载函数是一个类的成员函数,用于实现向量加法,它需要一个 `Vector` 类型的参数,表示要与当前向量相加的向量,返回值为一个 `Vector` 类型的结果向量。
B 中的 `-` 运算符重载函数是一个类外的函数,它需要两个 `Vector` 类型的参数,表示要进行相减的两个向量,返回值为一个 `Vector` 类型的结果向量。
D 中的 `/` 运算符重载函数是一个类的成员函数,用于实现向量除法,它需要一个 `Vector` 类型的参数,表示要除以当前向量的向量,返回值为一个 `Vector` 类型的结果向量。
因此,答案是 C。
相关问题
vector的+=运算符怎么重载
在C++中,可以通过重载运算符来定义自己的类类型,使其支持运算符操作。要重载=运算符,需要在类中定义一个名为operator=的成员函数。该函数必须是一个成员函数,因为=运算符总是作用于类的对象。
下面是一个重载=运算符的示例代码:
```
class Vector {
public:
Vector(int size) {
// 构造函数
}
// 重载=运算符
Vector& operator=(const Vector& other) {
if (this != &other) {
// 执行赋值操作
}
return *this;
}
private:
int* data;
int size;
};
```
在上面的代码中,我们定义了一个名为Vector的类,并在其中重载了=运算符。重载函数的参数是一个const Vector&类型的引用,表示被赋值的对象。返回值是一个指向当前对象的引用,以支持链式赋值。
在重载函数中,我们首先检查是否是自我赋值操作,然后执行实际的赋值操作。最后,我们返回一个指向当前对象的引用,以便支持链式赋值。
使用重载=运算符时,可以使用以下语法:
```
Vector v1(10);
Vector v2(10);
v2 = v1;
```
此代码将v1赋值给v2,并使用重载的=运算符执行赋值操作。
class Vector3 { public: Vector3(); Vector3(double x,double y,double z); public: Vector3 operator+(const Vector3 &A)const; Vector3 operator++(); friend Vector3 operator-(const Vector3 &v1, const Vector3 &v2); friend Vector3 operator--(Vector3 &v); void display()const; private: double m_x; double m_y; double m_z; }; Vector3::Vector3() :m_x(0.0), m_y(0.0), m_z(0.0) {} Vector3::Vector3(double x, double y,double z) : m_x(x), m_y(y), m_z(z) {} //运算符重载 Vector3 Vector3::operator+(const Vector3 &A) const { Vector3 B; B.m_x = this->m_x + A.m_x; B.m_y = this->m_y + A.m_y; B.m_z = this->m_z + A.m_z; return B; } Vector3 Vector3::operator++() { this->m_x ++; this->m_y ++; this->m_z ++; return *this; } void Vector3::display()const { cout<<"(" << m_x << "," << m_y << "," << m_z << ")" << endl; } Vector3 operator-(const Vector3 &v1,const Vector3 &v2) { Vector3 B(v1.m_x - v2.m_x, v1.m_y - v2.m_y, v1.m_z - v2.m_z); return B; } Vector3 operator--( Vector3 &v) { v.m_x--; v.m_y--; v.m_z --; return v; } int main() { Vector3 v1(1, 2, 3); Vector3 v2(2, 3, 2); ++v1;//v1.operator++(); 作为类成员函数可以显式调用 v1.display(); --v2; v2.display(); Vector3 v3 = v1 + v2;// v1.operator+(v2);作为类成员函数可以显式调用 v3.display(); Vector3 v4 = v1 - v2; v4.display(); return 0; }分析一下这段代码,可以将两个友元函数改为类成员函数吗?
可以将两个友元函数改为类成员函数,具体实现如下:
```c++
class Vector3 {
public:
Vector3();
Vector3(double x,double y,double z);
Vector3 operator+(const Vector3 &A)const;
Vector3 operator++();
Vector3 operator--();
Vector3 operator-(const Vector3 &A) const;
void display() const;
private:
double m_x;
double m_y;
double m_z;
};
Vector3 Vector3::operator+(const Vector3 &A) const {
Vector3 B;
B.m_x = this->m_x + A.m_x;
B.m_y = this->m_y + A.m_y;
B.m_z = this->m_z + A.m_z;
return B;
}
Vector3 Vector3::operator++() {
this->m_x ++;
this->m_y ++;
this->m_z ++;
return *this;
}
Vector3 Vector3::operator--() {
this->m_x --;
this->m_y --;
this->m_z --;
return *this;
}
Vector3 Vector3::operator-(const Vector3 &A) const {
Vector3 B;
B.m_x = this->m_x - A.m_x;
B.m_y = this->m_y - A.m_y;
B.m_z = this->m_z - A.m_z;
return B;
}
void Vector3::display() const {
cout << "(" << m_x << "," << m_y << "," << m_z << ")" << endl;
}
```
其中,将 `operator-` 和 `operator--` 改为了成员函数,并且将 `operator-` 的参数名改为了 `A`,来避免与 `operator--` 的参数名冲突。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)