hwaityd的小窝

Loading...
随笔 - 26,  文章 - 0,  评论 - 0,  阅读 - 452

类::成员

1. 静态(static)成员

  • 概念:静态成员是属于类的,而不是属于类的某个特定对象的。所有对象共享同一个静态成员。
  • 语法
    class MyClass {
    public:
    static int staticVar;
    };
  • 特点:静态成员变量在整个程序范围内只有一个实例,所有对象对它的修改都会影响到其他对象。

示例代码

#include <iostream>
class MyClass {
public:
static int staticVar;
void staticFunction() {
std::cout << "Static function" << std::endl;
}
};
int MyClass::staticVar = 10;
void function() {
MyClass::staticFunction(); // 调用静态成员函数
std::cout << MyClass::staticVar << std::endl; // 访问静态成员变量
}
int main() {
function(); // 静态成员函数可以在没有对象的情况下调用
return 0;
}

2. 静态成员的生命周期

  • 概念:静态成员的生命周期从程序开始运行时开始,直到程序结束时结束。
  • 特点:静态成员的初始化在main函数执行之前完成,且只初始化一次。

3. 静态成员的调用规则

  • 概念:静态成员可以通过类名直接访问,也可以通过对象访问。
  • 特点:即使在没有创建类的对象的情况下,也可以访问静态成员。

4. 常成员

  • 概念:常成员函数保证不会修改对象的状态。
  • 语法
    class MyClass {
    public:
    void function() const {
    // 只读操作
    }
    };
  • 特点:常成员函数可以在常对象上调用,也可以在非常对象上调用。

5. 常数据成员

  • 概念:常数据成员的值一旦初始化后不能被修改。
  • 语法
    class MyClass {
    public:
    MyClass(int val) : constDataMember(val) {}
    const int constDataMember;
    };
  • 特点:常数据成员必须在构造函数的初始化列表中初始化。

6. 初始化参数列表

  • 概念:初始化参数列表用于初始化非静态成员变量。
  • 语法
    class MyClass {
    public:
    MyClass(int val) : memberVar(val) {}
    private:
    int memberVar;
    };
  • 特点:使用初始化参数列表可以提高效率,特别是对于非POD类型的成员变量。

7. 常函数成员

  • 概念:常函数成员用const关键字修饰,表示该函数不会修改对象的状态。
  • 语法
    class MyClass {
    public:
    void function() const {
    // 只读操作
    }
    };
  • 特点:常函数成员可以在常对象上调用。

8. this指针

  • 概念this指针是一个指向当前对象的指针,用于区分成员函数中的局部变量和类的成员变量。
  • 语法
    class MyClass {
    public:
    void function(int val) {
    this->memberVar = val; // 使用this指针区分
    }
    private:
    int memberVar;
    };
  • 特点:在静态成员函数中,this指针是不允许使用的,因为静态成员函数不依赖于具体的对象。

以上是类成员的一些基本概念和用法,包括静态成员、常成员、初始化列表和this指针的使用。这些特性使得C++类更加灵活和强大。

posted on   hwaityd  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示