在 C++ 中,定义类是创建自定义数据类型的基本方法。类可以包含数据成员(变量)和成员函数(方法),以及构造函数、析构函数等特殊成员函数。以下是定义类的一些基本要素和示例:
1. 类的基本结构
类的基本定义包括类名、访问修饰符(如 public
、protected
、private
),以及数据成员和成员函数的定义。
cpp
class ClassName {
public:
// 公有成员
void publicMethod(); // 成员函数
int publicData; // 数据成员
protected:
// 受保护的成员
void protectedMethod();
int protectedData;
private:
// 私有成员
void privateMethod();
int privateData;
};
2. 数据成员和成员函数
- 数据成员:用于存储类的状态或属性。可以是任何基本数据类型或自定义类型。
- 成员函数:用于定义类的行为或操作数据成员的功能。
2.1 数据成员示例
cpp
class Person {
public:
std::string name; // 公有数据成员
int age;
};
2.2 成员函数示例
cpp
class Person {
public:
void setName(const std::string& newName) {
name = newName; // 修改数据成员
}
std::string getName() const {
return name; // 访问数据成员
}
private:
std::string name;
int age;
};
3. 构造函数和析构函数
- 构造函数:用于初始化类的对象。构造函数在对象创建时自动调用。
cpp
class Person {
public:
Person(const std::string& newName, int newAge) : name(newName), age(newAge) {
// 初始化数据成员
}
private:
std::string name;
int age;
};
- 析构函数:用于清理资源,通常在对象销毁时自动调用。
cpp
class Person {
public:
~Person() {
// 清理资源
}
};
4. 成员函数的定义
成员函数可以在类定义内定义(内联),或在类外定义:
4.1 内联定义
cpp
class Person {
public:
void setName(const std::string& newName) {
name = newName; // 成员函数实现
}
private:
std::string name;
};
4.2 外部定义
cpp
class Person {
public:
void setName(const std::string& newName);
private:
std::string name;
};
// 成员函数的外部定义
void Person::setName(const std::string& newName) {
name = newName;
}
5. 访问修饰符
- public:公有成员,可以被任何函数访问。
- protected:受保护成员,只能被该类及其派生类访问。
- private:私有成员,只能被该类内部的函数访问。
6. 类的实例化
定义类之后,可以创建类的对象(实例):
cpp
int main() {
Person person; // 创建对象
person.setName("Alice"); // 调用成员函数
std::cout << person.getName(); // 访问数据成员
return 0;
}
7. 类的继承
类可以通过继承机制扩展现有类的功能:
cpp
class Student : public Person {
public:
void setStudentID(int id) { studentID = id; }
private:
int studentID;
};
继承允许派生类继承基类的公有和受保护的成员,并可以重写基类的成员函数以实现多态。