成员变量与方法
声明成员变量、编写成员方法,并通过实例引用它们
成员变量与方法 是 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 反馈 — 无需本地设置。