🔟🔒 08-C++学习笔记-类与对象
在本篇学习笔记中,我们将详细讲解C++中的类与对象的概念和相关知识。类是C++中一种重要的数据类型,它允许我们自定义数据结构和相应的操作。
📚 C++类与对象详细讲解
✨类的概念
类是一种用户自定义的数据类型,它封装了数据和操作这些数据的函数。类可以看作是一种模板或蓝图,用于创建具有相同属性和行为的对象。
✨类的组成
一个类由数据成员和成员函数组成。数据成员用于存储对象的状态,而成员函数用于操作对象的行为。
✨对象的概念
对象是类的实例,是根据类的定义创建的具体变量。通过创建对象,我们可以使用类中定义的数据成员和成员函数。
🏗️ 类的结构
✨ 类的声明
类的声明描述了类的名称和成员,但没有具体的实现。类的声明通常放在头文件中,以便其他源文件可以使用该类。
示例:
// 类的声明
class MyClass {
// 数据成员
int num;
// 成员函数
void printNum();
};
在上述示例中,我们声明了一个名为MyClass
的类,它包含一个整型数据成员num
和一个成员函数printNum
。
✨类的定义
类的定义提供了成员函数的具体实现。类的定义通常放在源文件中,以便将类的声明和定义分离。
示例:
// 类的声明
class MyClass {
// 数据成员
int num;
// 成员函数
void printNum();
};
// 类的定义
void MyClass::printNum() {
cout << "Num: " << num << endl;
}
在上述示例中,我们在类的定义中实现了成员函数printNum
。
👀 类的定义与访问
✨ 类的定义
在C++中,我们可以通过class
关键字来定义一个类。类的定义包括类名、数据成员和成员函数。
示例:
class MyClass {
// 数据成员
int num;
// 成员函数
void printNum();
};
在上述示例中,我们定义了一个名为MyClass
的类,它包含一个整型数据成员num
和一个成员函数printNum
。
✨ 类的访问
类的成员可以分为公有成员、私有成员和保护成员。默认情况下,类的成员是私有的,只能在类的内部访问。我们可以使用访问修
饰符来控制类的成员的访问权限。
public
:公有成员,可以在类的外部和派生类中访问。private
:私有成员,只能在类的内部访问。protected
:保护成员,可以在类的内部和派生类中访问。
示例:
class MyClass {
public:
int publicNum; // 公有成员
private:
int privateNum; // 私有成员
protected:
int protectedNum; // 保护成员
};
在上述示例中,我们定义了一个类MyClass
,其中包含了公有成员publicNum
、私有成员privateNum
和保护成员protectedNum
。
🚀 静态成员
✨静态数据成员
静态数据成员是属于整个类而不是类的具体对象的成员。它在类的所有对象中共享相同的值。
示例:
class MyClass {
public:
static int count; // 静态数据成员
};
int MyClass::count = 0; // 静态数据成员的初始化
int main() {
MyClass::count++; // 使用类名访问静态数据成员
cout << "Count: " << MyClass::count << endl;
return 0;
}
在上述示例中,我们定义了一个静态数据成员count
,并在main
函数中使用类名访问并修改了该静态数据成员的值。
✨静态成员函数
静态成员函数属于整个类而不是类的具体对象,它可以在没有类的对象的情况下被调用。
示例:
class MyClass {
public:
static void printMessage() {
cout << "Hello, world!" << endl;
}
};
int main() {
MyClass::printMessage(); // 使用类名调用静态成员函数
return 0;
}
在上述示例中,我们定义了一个静态成员函数printMessage
,并在main
函数中使用类名调用了该静态成员函数。
🏗️ 构造函数与析构函数
✨构造函数
构造函数是一种特殊的成员函数,它在创建对象时被调用,用于初始化对象的数据成员。构造函数的名称与类名相同,没有返回类型,可以有参数。
示例:
class MyClass {
public:
// 默认构造函数
MyClass() {
cout << "Default constructor called." << endl;
}
// 带参数的构造函数
MyClass(int n) {
cout << "Constructor with parameter called. Value: " << n << endl;
}
};
int main() {
MyClass obj1; // 调用默认构造函数
MyClass obj2(10); // 调用带参数的构造函数
return 0
;
}
在上述示例中,我们定义了一个类MyClass
,并在其中定义了默认构造函数和带参数的构造函数。在main
函数中创建了两个对象,分别调用了不同的构造函数。
✨析构函数
析构函数是一种特殊的成员函数,它在对象被销毁时自动调用,用于清理对象分配的资源。析构函数的名称与类名相同,前面加上波浪号(~
),没有返回类型,不接受任何参数。
示例:
class MyClass {
public:
// 析构函数
~MyClass() {
cout << "Destructor called." << endl;
}
};
int main() {
MyClass obj; // 创建对象
return 0; // 对象被销毁,调用析构函数
}
在上述示例中,我们定义了一个类MyClass
,其中包含了一个析构函数。在main
函数中创建了一个对象,在程序结束时,该对象被销毁,调用了析构函数。
🔄 复制构造函数
复制构造函数是一种特殊的构造函数,用于创建一个新对象,并将其初始化为与另一个同类对象相同的值。
示例:
class MyClass {
public:
int value;
// 复制构造函数
MyClass(const MyClass& other) {
value = other.value;
}
};
int main() {
MyClass obj1;
obj1.value = 10;
MyClass obj2(obj1); // 使用复制构造函数创建新对象并初始化
cout << "Value of obj2: " << obj2.value << endl;
return 0;
}
在上述示例中,我们定义了一个类MyClass
,其中包含了一个复制构造函数。在main
函数中创建了一个对象obj1
,并将其值设置为10。然后,使用复制构造函数创建了一个新对象obj2
,并将其值初始化为obj1
的值。
这样,我们就完成了对C++类与对象的详细讲解。掌握了类的概念、类的结构、类的定义与访问、静态成员、构造函数与析构函数以及复制构造函数等重要知识点。通过合理地使用类与对象,我们可以更好地组织和管理代码,实现模块化编程的思想。
🔎 总结
在本篇学习笔记中,我们深入学习了C++中的类与对象。我们了解了类的概念、类的结构、类的定义与访问、静态成员、构造函数与析构函数以及复制构造函数等重要内容。通过合理地使用类与对象,我们可以提高代码的可读性、可维护性和复用性。掌握这些知识,将有助于我们更加灵活和高效地
使用C++进行编程。
希望本篇学习笔记对你的学习有所帮助!如果有任何疑问,欢迎继续探索更多关于C++类与对象的知识。祝你在编程的道路上取得更大的进步!🚀
⭐️希望本篇文章对你有所帮助。
⭐️如果你有任何问题或疑惑,请随时向提问。
⭐️感谢阅读!