C++类中的全局函数举例
时间: 2023-07-11 12:10:32 浏览: 121
以下是一个示例,展示了如何在C++类中定义和使用全局函数:
```c++
#include <iostream>
using namespace std;
class MyClass {
private:
int x;
public:
MyClass(int a) {
x = a;
}
int getX() {
return x;
}
friend void printX(MyClass obj);
};
void printX(MyClass obj) {
cout << "x value is: " << obj.x << endl;
}
int main() {
MyClass obj(5);
printX(obj);
return 0;
}
```
在上面的示例中,我们定义了一个 MyClass 类,该类包含一个私有变量 x 和一个公共成员函数 getX()。我们还定义了一个全局函数 printX(),并将其声明为 MyClass 类的友元函数。在 main() 函数中,我们创建了 MyClass 对象 obj 并调用了 printX() 函数,该函数可以访问 MyClass 类的私有变量 x。
输出结果为:
```
x value is: 5
```
注意,全局函数可以访问类的私有成员,但是这并不意味着应该经常使用友元函数。友元函数打破了封装性原则,因此应该仅在必要的情况下使用。
相关问题
c/c++中extern应用举例
当在一个源文件中使用 extern 关键字声明一个变量或函数时,它表示该变量或函数在其他源文件中定义。举个例子,如果在一个源文件中声明了一个全局变量,但是在另一个源文件中定义了该变量,那么在第一个源文件中使用该变量时,就需要使用 extern 关键字来声明该变量。例如:
// file1.c
extern int global_var;
int main() {
global_var = 10;
return 0;
}
// file2.c
int global_var;
在上面的例子中,file1.c 中使用了 extern 关键字来声明 global_var 变量,因为它在 file2.c 中定义。
源文件和头文件,函数应该怎么写 C++举例
当编写C语言代码时,我们通常会将代码拆分成源文件和头文件两个部分。源文件通常包含实现具体功能的函数定义和全局变量的定义,头文件则包含函数和变量的声明以及相关的宏定义和类型定义。
举个例子,如果要实现一个简单的求两个整数的和的函数,可以将其定义在一个名为“sum.c”的源文件中:
```
int sum(int a, int b) {
return a + b;
}
```
在头文件“sum.h”中声明该函数:
```
#ifndef _SUM_H_
#define _SUM_H_
int sum(int a, int b);
#endif
```
再在主函数所在的源文件中包含头文件“sum.h”,即可调用sum函数:
```
#include "sum.h"
int main() {
int a = 2, b = 3;
int c = sum(a, b);
printf("%d + %d = %d\n", a, b, c);
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)