栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-11-02

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-11-02

一、封装 1、面向过程与面向对象

面向过程:面向过程是一件事“该怎么做”,是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可。

面向对象:面向对象是一件事“该谁来做”,然后那个“谁”就是对象。是以对象为核心,关注需要哪些对象,对象需要具备哪些功能,然后创建出解决问题的对象,利用对象调用相应的方法即可。采用OOP方法时,首先从用户的角度考虑对象,描述对象所需的数据以及描述用户与数据交互所需的操作。完成对接口的描述后,需要确定如何实现接口及存储数据。

面向过程的优缺点

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展。

面向对象的优缺点

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出高内聚低耦合的系统,使系统更加灵活、更加易于维护。
缺点:性能比面向过程低。

2、抽象与类

生活中充满复杂性,处理复杂性的方法之一是简化与抽象。抽象就是将问题的本质提取出来,并根据特征来描述问题。C++中的类是一种将类转化为用户定义类型的C++工具,它将数据表示与操作数据的方法合成一个完整的包。类是对象的抽象,对象是类的具体化。

3、构造函数

下面提供了一个类的定义:

class Person{
private:
    string name;
    int age;
public:
    Person();
    Person(const string &name, int age);
    ~Person();
};

构造函数语法

构造函数名与类名相同,并且没有返回值,可以进行重载。

构造函数作用

创建类对象并对类对象的非静态数据成员进行初始化。

要注意的点

  1. 无法使用对象来调用构造函数,因为在构造函数构造出对象之前对象是不存在的。因此,构造函数被用来创建对象,而不能通过对象来调用。
  2. 如果没有提供任何构造函数,C++将提供默认的构造函数。它是默认构造函数的隐式版本,不做任何工作。如果为类提供了构造函数,此时编译器不会生成默认的构造函数。因此,为类定义了构造函数,就要为它提供默认的构造函数。
  3. 调用默认构造函数,不能使用圆括号
    Person zhangsan(); //定义了一个返回值类型为Person的方法
    Person lisi; //调用默认的构造函数
  4. 成员初始化列表只能应用于构造函数。
4、析构函数

析构函数语法

在类名前加~,没有返回值,也没有参数。

析构函数作用

当一个对象的生命周期结束时,程序会自动的调用一个特殊的成员函数–析构函数,来完成一些清理工作。如果程序员没有提供析构函数,编译器将隐式地声明一个默认的析构函数。

5、class与struct之间的区别

实际上,C++对结构体进行了扩展,使之具有与类相同的特征。它们之间的唯一的区别就是,结构的默认访问类型是public,而类的默认访问类型是private。C++程序员通常使用类来实现类描述,而把结构限制为只表示纯粹的数据对象。

6、this指针

什么是this指针?

this是指向实例化对象的一个指针,里面存储的是对象的地址,通过this可以访问内部的非静态成员变量与方法。每个非静态成员函数都有一个this指针(包括构造函数与析构函数),this指向调用对象。

this指针的作用

this的作用域是在类的内部,声明类时还不知道实例化对象的名字,所以使用this来使用对象。this指针指向用来调用成员函数的对象,在调用对象的非静态函数时,this作为隐藏的参数传给该方法。

obj.fun(1); 等价于 obj.fun(&obj, 1);

何时使用this指针?

  1. 在类的非静态成员函数中返回对象本身时,直接使用return *this。(常用于运算符重载、赋值构造函数、拷贝构造函数)
  2. 函数的形参名与成员变量名相同时`
Person::Person(const string &name, int age){
    this->name = name;
    this->age = age;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396033.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号