non-member function是什么
时间: 2023-05-26 21:07:02 浏览: 395
non-member function是一种函数,它不是在类中定义的成员函数,而是在类外部定义的。这意味着它不是直接与类相关联的函数,而是一个独立的函数。这种函数可以访问类中的公共成员变量和公共成员函数,但不能直接访问类的私有成员变量和私有成员函数。通常,non-member function用于扩展已有的类,添加新的功能,或者将类与其他类、函数、和库一起使用。
相关问题
写一些non-member function这种
### 回答1:
1. max(a, b) - 返回a和b中较大的值
2. isdigit(c) - 判断一个字符是否是数字
3. strlen(str) - 返回一个字符串的长度
4. pow(base, exp) - 返回base的exp次方
5. srand(seed) - 根据seed设定随机数生成器的种子
6. tolower(c) - 将一个字符转换为小写形式
7. floor(x) - 返回不大于x的最大整数
8. ceil(x) - 返回不小于x的最小整数
9. strchr(str, c) - 在一个字符串中查找第一个匹配c的字符,并返回它的位置
10. strcmp(str1, str2) - 比较两个字符串的大小,如果相等则返回0
### 回答2:
非成员函数是指不隶属于一个类的函数,也称为独立函数或自由函数。非成员函数是在类外部定义的,不与任何特定的类或对象关联。
非成员函数在许多情况下都非常有用。以下是一些使用非成员函数的常见情况:
1. 实用功能:非成员函数常用于实现通用的实用功能,这些功能在整个程序中都可以重复使用。例如,一个计算平方的函数就可以被多个类或对象共享。
2. 参数转换:有时,我们可能需要将一个类的对象转换为另一个类的对象,非成员函数可以用于执行这种类型转换。例如,可以定义一个非成员函数将一个字符串转换为整数,然后在程序的任何地方都可以使用它。
3. 操作符重载:非成员函数还可以用于重载操作符。通过使用非成员函数来重载操作符,我们可以在不修改类定义的情况下扩展对操作符的使用方式。例如,可以定义一个非成员函数来重载"+"操作符,使得两个类对象可以相加。
4. 命名空间:非成员函数可以放置在命名空间中,以便将相关的函数组织在一起,并与其他相同名称的函数区分开来。这提高了代码的可读性和可维护性。
总之,非成员函数是与特定类或对象无关的函数。它们可以在多个地方使用,并提供了一种在类外部定义通用功能和操作符重载的方式。非成员函数在编程中非常常见,并且在许多场景下都非常有用。
error: non-member function 'QString getName()' cannot have cv-qualifier QString getName() const; ^
这个错误提示意味着你定义的非成员函数 `getName()` 带有 `const` 修饰符,但是非成员函数不能有成员函数的 `const` 修饰符。如果你想让这个函数成为类的成员函数并且可以带有 `const` 修饰符,你需要将其定义为类的成员函数。
以下是一个示例:
```cpp
class MyClass {
public:
QString getName() const; // 成员函数可以带有 const 修饰符
};
QString MyClass::getName() const {
return name;
}
```
如果你不想将其定义为类的成员函数,你可以将 `const` 修饰符从函数声明和定义中移除。
```cpp
QString getName();
```
```cpp
QString getName() {
return name;
}
```
阅读全文