在 C++ 中,类(class)和对象(object)是面向对象编程(OOP)的核心概念。类是一种用户自定义的数据类型,它将数据(成员变量)和操作这些数据的函数(成员函数)封装在一起。对象则是类的实例,通过创建对象可以使用类中定义的成员变量和成员函数。下面详细介绍 C++ 中类和对象的相关知识。
1. 类的定义
类的定义使用 class
关键字,其基本语法如下:
class 类名 {
// 访问修饰符:public、private、protected
public:
// 公有成员,外部可以直接访问
// 成员变量
数据类型 成员变量名;
// 成员函数声明
返回类型 成员函数名(参数列表);
private:
// 私有成员,外部不能直接访问,只能通过公有成员函数访问
数据类型 成员变量名;
protected:
// 受保护成员,在派生类中可以访问
数据类型 成员变量名;
}; // 注意这里的分号不能省略
示例代码:
#include <iostream>
// 定义一个名为 Person 的类
class Person {
public:
// 公有成员变量
std::string name;
int age;
// 公有成员函数,用于显示信息
void displayInfo() {
std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
}
};
2. 对象的创建和使用
定义好类之后,就可以创建该类的对象,并使用对象来访问类的成员变量和成员函数。创建对象的语法如下:
类名 对象名;
示例代码:
#include <iostream>
class Person {
public:
std::string name;
int age;
void displayInfo() {
std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
}
};
int main() {
// 创建 Person 类的对象
Person person1;
// 访问对象的成员变量并赋值
person1.name = "张三";
person1.age = 20;
// 调用对象的成员函数
person1.displayInfo();
return 0;
}
3. 构造函数和析构函数
- 构造函数:是一种特殊的成员函数,用于在创建对象时初始化对象的成员变量。构造函数的名称与类名相同,没有返回类型。
- 析构函数:也是一种特殊的成员函数,用于在对象销毁时进行一些清理工作。析构函数的名称是在类名前加上波浪号
~
,同样没有返回类型。
示例代码:
#include <iostream>
class Person {
public:
std::string name;
int age;
// 构造函数
Person(std::string n, int a) {
name = n;
age = a;
std::cout << "对象已创建" << std::endl;
}
// 析构函数
~Person() {
std::cout << "对象已销毁" << std::endl;
}
void displayInfo() {
std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
}
};
int main() {
// 使用构造函数创建对象
Person person("李四", 25);
person.displayInfo();
return 0;
}
4. 访问修饰符
C++ 中有三种访问修饰符:
public
:公有成员可以在类的外部直接访问。private
:私有成员只能在类的内部访问,外部不能直接访问,通常通过公有成员函数来间接访问。protected
:受保护成员在类的内部和派生类中可以访问,外部不能直接访问。
示例代码:
#include <iostream>
class Person {
private:
std::string name;
int age;
public:
// 构造函数
Person(std::string n, int a) {
name = n;
age = a;
}
// 公有成员函数,用于获取私有成员变量的值
void displayInfo() {
std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
}
};
int main() {
Person person("王五", 30);
// 不能直接访问私有成员变量
// person.name = "赵六"; // 错误
person.displayInfo();
return 0;
}
5. 成员函数的实现
成员函数可以在类的定义中直接实现,也可以在类的外部实现。在类的外部实现成员函数时,需要使用作用域解析运算符 ::
。
示例代码:
#include <iostream>
class Person {
private:
std::string name;
int age;
public:
Person(std::string n, int a);
void displayInfo();
};
// 在类的外部实现构造函数
Person::Person(std::string n, int a) {
name = n;
age = a;
}
// 在类的外部实现成员函数
void Person::displayInfo() {
std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
}
int main() {
Person person("孙七", 35);
person.displayInfo();
return 0;
}
通过以上内容,你可以了解 C++ 中类和对象的基本概念、定义和使用方法。类和对象是 C++ 面向对象编程的基础,掌握它们对于编写复杂的程序非常重要。