[C++] 轻熟类和对象

07-16 1343阅读

[C++] 轻熟类和对象[C++] 轻熟类和对象

[C++] 轻熟类和对象

类的定义

格式规范

  • class为定义类的关键字,后有类名,类的主体存于{}中;
  • 类定义结束时后面的分号不能省略;
  • 类体的内容成为类的成员,类中的变量成为成员变量,函数成为方法或成员函数;
  • C++兼容C语言的struct用法,同时将struct升级成了类的用法(更推荐类)
  • 在类定义中直接定义一个成员函数(即在类声明的花括号{}内直接给出函数体),编译器会默认将这个成员函数视为inline。这样做的好处是,如果成员函数非常简单,编译器可以优化代码,通过内联展开来提高程序的执行效率。

    举例代码:

    class Stack
    {
    public:
        // 成员函数
        void Init(int n = 4)
        {
            array = (int*)malloc(sizeof(int) * n);
            if (nullptr == array)
            {
                perror("malloc申请空间失败");
                return;
            }
            capacity = n;
            top = 0;
            
    private:
        // 成员变量
        int* array;
        size_t capacity;
        size_t top;
    }; // 分号不能省略
    

    访问限定符

    封装的概念

    封装是OOP的一个基本原则,它指的是将数据(属性)和操作这些数据的代码(方法)组合在一起,形成一个单元。封装的主要目的是隐藏内部实现的细节,只暴露出一个可以被外界访问和操作的接口。

    1. 数据封装:类定义了属性(也称为成员变量或字段),这些属性代表了对象的状态。封装确保了这些属性只能通过类提供的方法来访问和修改,从而保护数据不被外部代码直接访问,避免数据被不当操作。
    2. 方法封装:类还定义了方法(也称为成员函数或行为),这些方法定义了可以对对象执行的操作。封装确保了对象的行为是通过这些方法来实现的,而不是直接操作对象的内部状态。

    访问限定符

    [C++] 轻熟类和对象

    1. 隐藏实现细节:通过使用private访问限定符,类的实现细节被隐藏起来,外部代码不能直接访问或修改对象的内部状态,只能通过public方法来操作。
    2. 提供接口:public方法提供了一个接口,允许外部代码以受控的方式与对象交互。这些方法可以包含对private成员的访问和修改,但这些操作的细节对外部是不可见的。
    3. 继承和多态性:protected访问限定符允许子类访问和修改父类的某些成员,这在实现继承和多态性时非常有用。子类可以扩展或修改父类的行为,同时保持对外部代码的封装。
    4. 维护数据完整性:通过限制对属性的直接访问,封装确保了数据的完整性和一致性。
    5. 促进模块化:封装使得代码更加模块化,每个类负责管理自己的数据和行为,减少了不同模块之间的耦合。(高内聚、低耦合)

    类域

    类会定义一个新的作用域,类的所有成员都在类的作用域中,在类外定义成员时需要用::作用域操作符指明成员属于哪个类域。

    在类外定义成员函数:

    #include
     using namespace std;
     class Stack
    {
     public:
    	 // 成员函数
    		 void Init(int n = 4);
    private:
    	// 成员变量
    	int* array;
    	size_t capacity;
    	size_t top;
     };
     // 声明和定义分离,需要指定类域
     void Stack::Init(int n)
     {
    	 array = (int*)malloc(sizeof(int) * n);
    	 if (nullptr == array)
    	 {
    		 perror("malloc申请空间失败");
    		 return;
    	 }
    	 capacity = n;
    	 top = 0;
     }
    

    [C++] 轻熟类和对象

    实例化

    概念

    类是一个蓝图或模板,它定义了一组属性(成员变量)和方法(成员函数),这些属性和方法共同描述了一类事物的特征和行为。而通过创建对象就可以将对象进行实例化,这一一种一对多的关系,一个类可以创造多个对象,每一个类都是一个个体实例,并不冲突。

    // 如何实例化对象
    // 定义一个日期类
    class Date
    {
    public:
    	void Init(int year, int month, int day)
    	{
    		_year = year;
    		_month = month;
    		_day = day;
    	}
    	void Print()
    	{
    		cout 
    	// Date类实例化出对象d1和d2
    	Date d1;
    	Date d2;
    	d1.Init(2024, 3, 31);
    	d1.Print();
    	d2.Init(2024, 7, 5);
    	d2.Print();
    	return 0;
    }
    
    	_year = year;
    	this-_month = month;
    	this-_day = day;
    }
    
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]