类与对象简介
在C++中,类和对象是面向对象编程(Object-Oriented Programming 简称 OOP)的核心概念,其重要性体现在多个方面,包括代码的重用性、可维护性、可扩展性和清晰性等方面。下面详细解释这些概念及其在C++中的重要性:
1. 代码的重用性
类是创建对象的模板或蓝图,它定义了对象的数据(属性)和行为(方法)。通过使用类,可以创建多个具有相同数据结构和方法的对象,从而避免了重复编写相同的代码。这种机制大大提高了代码的重用性,减少了开发时间和潜在的错误。
2. 可维护性
面向对象编程通过将数据和操作数据的方法封装在类中,提高了代码的可维护性。封装隐藏了类的内部实现细节,只允许通过公共接口(即类的成员函数)与外部世界交互。这意味着,如果需要修改类的内部实现,只要公共接口保持不变,就不会影响到使用该类的其他部分,从而降低了维护成本。
3. 可扩展性
类和对象支持继承和多态等特性,这些特性使得C++程序具有良好的可扩展性。继承允许创建基于现有类的派生类,这些派生类可以继承基类的属性和方法,并可以添加新的属性或覆盖(重写)基类的方法。多态则允许通过基类指针或引用来调用派生类的成员函数,这使得程序能够在运行时决定调用哪个函数,从而提高了程序的灵活性和可扩展性。
4. 清晰性
面向对象编程将现实世界中的实体抽象为类和对象,使得代码更加贴近人类思维方式,提高了代码的可读性和清晰度。通过将相关的数据和方法组织在同一个类中,可以很容易地理解类的职责和与其他类的关系,这对于大型项目的开发和维护尤为重要。
5. 模块化
类和对象的使用促进了代码的模块化。每个类都封装了特定的功能和数据,这使得程序可以被分解为更小的、更易于管理的部分。模块化不仅有助于减少代码之间的耦合度,还有助于实现代码的并行开发和测试。
6.结论
综上所述,类和对象在C++中的重要性不言而喻。它们是实现面向对象编程的基石,通过提高代码的重用性、可维护性、可扩展性和清晰性,使得C++成为开发大型、复杂应用程序的理想选择。
类与结构体的差异
C语言中我们已经学习过结构体这一自定义类型,C语言结构体内不允许定义函数且内部数据是可以在外部直接修改的,从程序的安全性考虑,在C++中对其进行了修改,引入类这一新的自定义类型(C++中的结构体是可以定义函数的,但考虑到数据的保护,我们常常采用类)
类:类名+属性(包含的数据)+行为(与外界交换数据的函数,保护了类内数值)
此外还有三种权限public protected private对应类的封装属性,只对类外有效,类内直接访问。
- public(公开的):
public
修饰符表示该成员可以被任何其他类访问。也就是说,如果一个类的成员被声明为public
,那么无论是该类内部的代码、同一包内的其他类,还是不同包中的类,都可以访问这个成员。- 使用场景:当你希望类的某些成员能够被其他任何类使用时,应将这些成员声明为
public
。
- private(私有的):
private
修饰符表示该成员只能被其所在的类内部访问。即使是同一个包内的其他类也无法访问被声明为private
的成员。- 使用场景:当你希望某个成员仅在其所属的类内部被使用时,应将其声明为
private
。这是封装性的一个重要体现,有助于隐藏类的内部实现细节。
- protected(受保护的):
protected
修饰符表示该成员可以被其所在的类内部访问,也可以被同一包内的其他类访问,还可以被不同包中的子类访问。但是,它不能被不同包中的非子类访问。- 使用场景:当你希望某个成员在其所属的类内部、同一包内的其他类以及任何子类中被访问时,应将其声明为
protected
。这是实现继承时控制访问权限的一种方式。
一个简单的类
class ming
{
public:
void get_a(int a) //从类外获取类内值,避免直接访问类内值
{
_a = a;
}
int put_a() //传出值_a
{
return _a;
}
protected:
private:
int _a=10 ; //类中可以设默认值
};
int main()
{
ming x;
x.get_a(79);
cout << x.put_a() << endl;
return 0;
}
类中函数不仅可以定义在类中,还可以类内声明,类外实现。但要在函数前标明类域。
class ming
{
public:
void get_a(int a); //类内声明
protected:
private:
int _a=10 ;
};
void ming::get_a(int a) //类外实现
{
_a = a;
}
完