类对象成员和非类对象成员分别有哪些
时间: 2023-09-18 16:06:37 浏览: 112
类对象成员和非类对象成员是指在一个类中定义的成员变量或成员函数。具体来说:
类对象成员指的是在类中定义的静态成员变量和静态成员函数,它们属于整个类,而不是类的某个具体对象。可以通过类名直接访问,不需要创建对象。例如:
```cpp
class MyClass {
public:
static int s_i; // 静态成员变量
static void s_func() {} // 静态成员函数
};
int MyClass::s_i = 0; // 静态成员变量初始化
int main() {
MyClass::s_i = 10; // 类名直接访问静态成员变量
MyClass::s_func(); // 类名直接调用静态成员函数
return 0;
}
```
非类对象成员指的是在类中定义的普通成员变量和普通成员函数,它们属于类的具体对象,需要通过对象来访问。例如:
```cpp
class MyClass {
public:
int m_i; // 普通成员变量
void m_func() {} // 普通成员函数
};
int main() {
MyClass obj;
obj.m_i = 10; // 通过对象访问普通成员变量
obj.m_func(); // 通过对象调用普通成员函数
return 0;
}
```
需要注意的是,如果一个成员函数既不是静态函数也不是虚函数,则该成员函数不能被类名直接调用,也不能被类的具体对象直接调用,只能通过对象指针或引用调用。例如:
```cpp
class MyClass {
public:
void m_func() {} // 普通成员函数
};
int main() {
MyClass obj;
MyClass *pObj = &obj;
pObj->m_func(); // 通过对象指针调用普通成员函数
MyClass &rObj = obj;
rObj.m_func(); // 通过对象引用调用普通成员函数
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)