c operator
时间: 2024-05-18 14:11:55 浏览: 27
C语言中的operator指的是操作符,用于进行各种数学、逻辑和位运算等操作。C语言中常用的操作符包括算术运算符(+、-、*、/、%)、关系运算符(<、<=、>、>=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等等。除此之外,C语言还有一些其他的操作符,如赋值运算符(=、+=、-=、*=、/=、%=)、条件运算符(?:)、逗号运算符(,)等等。
相关问题
class C { friend C operator+ (const C&, const C&); /* …… / }; C C::operator+ (const C& c1, const C& c2) { / …… */ }的错误
这段代码有两处错误:
1. `operator+` 函数是一个友元函数,不属于类 `C`,因此不能使用类作用域运算符 `::` 来定义该函数。应该在类外定义该函数。
2. 在类中声明 `operator+` 函数时,应该声明函数原型,而不是定义函数。因此应该将函数体中的代码移到函数原型之后的花括号中去。
下面是正确的代码示例:
```cpp
class C {
friend C operator+(const C&, const C&);
};
C operator+(const C& c1, const C& c2) {
C result;
// 对 c1 和 c2 进行加法运算,并将结果存储在 result 中
return result;
}
```
这样就可以在类外定义 `operator+` 函数,并在类中声明该函数的友元关系了。注意,由于 `operator+` 是一个友元函数,因此不需要将 `C` 类型的对象作为第一个参数传递给该函数。
class C { friend C operator+ (const C&, const C&); /* …… */ }; C C::operator+ (const C& c1, const C& c2) { /* …… */ }
这段代码中定义了一个名为 `C` 的类,并定义了一个名为 `operator+` 的友元函数,该函数接受两个 `C` 类型的参数,并返回一个 `C` 类型的对象。
在类外定义 `operator+` 函数时需要指明该函数属于哪个类,因此要在函数名前加上类名 `C::`。另外,由于 `operator+` 函数是一个友元函数,因此需要在类定义中声明一下该函数。
下面是完整代码示例:
```cpp
class C {
friend C operator+(const C&, const C&);
public:
// ...
};
C operator+(const C& c1, const C& c2) {
// ...
}
```
注意,在定义友元函数时,需要在函数名前加上 `friend` 关键字,但在类外定义时则不需要。另外,友元函数可以访问该类的私有成员,但不属于该类。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.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)