0Pricing
C++ Academy · 课时

成员变量与方法

声明成员变量、编写成员方法,并通过实例引用它们

成员变量与方法 是 CoddyKit 上的免费 C++ Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C++ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C++ Academy 课程共包含 4 节课。

类的成员

类可以包含:

  • 成员变量(数据,有时称为字段)
  • 成员函数(方法)
  • 嵌套类型(类型别名、枚举、类)
  • 静态成员(在所有实例之间共享)

声明成员变量

在类体中声明成员变量。为保持整洁,请使用 C++11 的类内默认初始化器。

class Person {
    std::string name_ = "unknown";
    int age_ = 0;
public:
    // ...
};

命名约定

私有成员的常见命名约定:

  • 末尾加下划线:name_
  • 开头加 m_:m_name
  • 使用普通名称,并隐式添加 this->

选择一种并保持一致。

在类内部定义方法

较短的方法可以直接在类体内定义,并且会隐式成为内联方法。

class Counter {
    int n_ = 0;
public:
    void increment() { ++n_; }
    int value() const { return n_; }
};

在类外部定义方法

较长的方法通常在类外部定义,往往位于 .cpp 文件中。请使用作用域解析运算符 ::。

// header
class Logger {
public:
    void log(const std::string& msg);
};

// implementation
void Logger::log(const std::string& msg) {
    std::cout << "[LOG] " << msg << "\n";
}

调用方法

对对象使用点号语法,对指针使用箭头语法。

Counter c;
c.increment();

Counter* p = &c;
p->increment();

const 方法

不修改对象的方法应标记为 const。这类方法可以在 const 实例上调用。

class Counter {
    int n_ = 0;
public:
    int value() const { return n_; }   // does not modify *this
};

静态成员

静态成员属于类,而不属于各个实例。使用 static 声明,并在源文件中定义。

class Logger {
public:
    static int messageCount;
    static void log(const std::string& msg);
};
int Logger::messageCount = 0;

访问说明符

有三个访问级别:

  • public —— 可从任何位置访问
  • private —— 只能在类内部访问
  • protected —— 可在类内部和派生类中访问

实践中的封装

将数据成员设为私有。通过能够维护不变量的方法对外提供访问。

class Temperature {
    double celsius_ = 0.0;
public:
    void setCelsius(double c);     // validates range
    double celsius() const { return celsius_; }
    double fahrenheit() const { return celsius_ * 9.0/5.0 + 32; }
};

方法与非成员函数

并非所有内容都必须是方法。如果函数只使用公开接口,请优先使用非成员函数,这样可以减少耦合。

快速检查

哪个关键字用于标记不修改对象的成员函数?

回顾

成员变量保存每个实例的状态;方法操作这些状态。将不修改对象的方法标记为 const。将数据设为私有,并通过小而明确的公开接口提供行为。

常见问题解答

「成员变量与方法」课时是免费的吗?

是的 — 「成员变量与方法」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C++ Academy 课程的其余内容,请升级到 CoddyKit PRO。 C++ Academy 课程共包含 4 节课。

「成员变量与方法」这节课中我会学到什么?

声明成员变量、编写成员方法,并通过实例引用它们 你通过在浏览器中直接运行的动手代码来练习 C++ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C++ Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C++ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「成员变量与方法」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C++ Academy 课中编写并运行代码吗?

能。每节 C++ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. struct 与 class:分别适用于何时
  2. 成员变量与方法
  3. 构造函数与成员初始化列表
  4. this 指针与封装
← 返回 C++ Academy