qt如何类内创建一个静态函数
时间: 2024-05-18 12:09:31 浏览: 15
在Qt中,可以在类内声明和实现静态函数。声明静态函数的方式与声明普通成员函数类似,只需在函数前加上static关键字即可。而在实现静态函数时,需要在函数名前加上类名作为限定符。
以下是一个简单的示例代码:
```
class MyClass {
public:
static void myStaticFunction();
};
void MyClass::myStaticFunction() {
// 实现静态函数
}
// 调用静态函数
MyClass::myStaticFunction();
```
相关问题
qt类内非静态函数使用静态变量
在Qt中,类内非静态函数使用静态变量的方法与普通的类内非静态函数使用静态变量的方法相同。下面是一个示例代码:
```cpp
class MyClass {
public:
MyClass();
~MyClass();
void setNum(int num);
int getNum();
private:
static int m_num;
};
int MyClass::m_num = 0;
MyClass::MyClass()
{
}
MyClass::~MyClass()
{
}
void MyClass::setNum(int num)
{
m_num = num;
}
int MyClass::getNum()
{
return m_num;
}
```
在上面的代码中,我们定义了一个名为MyClass的类,它有一个私有的静态变量m_num,表示一个全局的变量。在MyClass的非静态函数setNum中,我们可以通过类名加作用域运算符来访问静态变量m_num,并将其设置为传入的参数值。在MyClass的非静态函数getNum中,同样可以通过类名加作用域运算符来访问静态变量m_num,并将其返回。
使用该类的示例代码如下:
```cpp
MyClass obj1;
MyClass obj2;
obj1.setNum(10);
qDebug() << "obj1 num:" << obj1.getNum();
qDebug() << "obj2 num:" << obj2.getNum();
```
在上面的代码中,我们创建了两个MyClass的实例,然后通过obj1的setNum函数将静态变量m_num设置为10。接着我们通过obj1和obj2的getNum函数分别获取静态变量m_num的值,可以看到它们都是10。
需要注意的是,静态变量是类的所有实例共享的,因此如果通过一个实例的非静态函数来修改静态变量的值,那么该静态变量的值将会被所有实例共享。
qt类内静态函数使用非静态变量
在Qt中,类内静态函数使用非静态变量的方法与普通的类内静态函数使用非静态变量的方法相同。下面是一个示例代码:
```cpp
class MyClass {
public:
MyClass();
~MyClass();
static void setNum(int num);
static int getNum();
private:
static int m_num;
};
int MyClass::m_num = 0;
MyClass::MyClass()
{
}
MyClass::~MyClass()
{
}
void MyClass::setNum(int num)
{
m_num = num;
}
int MyClass::getNum()
{
MyClass obj;
return m_num + obj.m_num;
}
```
在上面的代码中,我们定义了一个名为MyClass的类,它有一个私有的静态变量m_num,表示类的实例数量。在MyClass的静态函数setNum中,我们可以直接访问静态变量m_num,并将其设置为传入的参数值。在MyClass的静态函数getNum中,我们通过创建一个MyClass的实例obj来访问非静态变量m_num,并将静态变量m_num和非静态变量m_num的值相加后返回。
需要注意的是,在访问非静态变量时,必须通过类的实例来访问,而不能直接使用类名来访问。因此,在MyClass的静态函数getNum中,我们需要通过创建一个MyClass的实例obj来访问非静态变量m_num。
相关推荐
![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)