C++学习笔记

一、温故知新

1、封装

        1)封装的简介

            封装是C++三大特性之一,防止函数直接访问类的内部成员

        2)封装的意义

            【1】实现类的属性(变量)与行为(函数)

            【2】对属性和行为的权限加以控制(需要使用修饰类成员的关键字)

2、修饰类成员关键字

        1)简介

        【1】public

                类的内部和类的外部都可以访问修改的公有的成员

        【2】private

                只能在类的内部进行访问和修改,在类的成员函数中访问类的成员变量

        【3】protected

                同private,但在有继承关系时,两者不同

--------------------------------------------------------------------------

不同之处:

--------------------------------------------------------------------------

3、特殊的成员函数

        1)构造函数

                用于实例化对象的时候,初始化对象的属性(成员变量),并且在实例化对象的时候自动调用。

                构造函数的名称与类的名称是相同的,并没有返回值类型。

                如果定义类的时候没有指定构造函数,编译会默认生成一个构造函数。

        2)默认构造函数

                【1】我们不写,编译器默认生成的构造函数

                【2】没有参数的构造函数

                【3】全缺省的构造函数

        注意:构造函数可以重载,但默认构造函数只能有一个。

        3)构造函数的特性

                【1】没有返回值

                【2】函数名与类名相同

                【3】可以重载

                【4】在实例化对象的时候自动调用

        4)初始化列表

                构造函数可以使用初始化列表的方式进行初始化成员变量,其他函数不可以。

        5)拷贝构造函数

                是把已实例化好的对象将值拷贝给新的实例化对象。

       m_len = v.m_len         // 浅拷贝:只是拷贝数值

       m_a = new int [m_len];        // 深拷贝:涉及到了类中存在指针,并存在动态开辟空间

       memcpy(m_a, v.m_a, sizeof(int) * m_len);

        6)析构函数

                类的析构函数会在每次删除所创建的对象时自动执行。

                主要目的是来释放空间。

                析构函数不可以重载,在没有实现析构函数时,编译器也会生成默认析构函数。

4、this指针

        类的成员函数都有一个默认的参数是指向当前对象的this指针。

二、友元和静态成员

1、static

        C语言:

        【1】修饰局部变量(成为静态局部变量)

        (1)static关键字修饰局部变量不改变作用域,但是生命周期变长。

        (2)本质上,static关键字修饰局部变量,改变了局部变量的存储位置,因为存储位置的差异,使得执行效果不一样。普通的局部变量放在栈区,这种局部变量进入作用域创建,出作用域释放。局部变量被static修饰后成为静态局部变量,这种变量放在静态区,创建好后,直到程序结束后才释放。

        (3)static的另一个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置0,然

相关推荐

  1. c++模板学习笔记

    2024-07-12 08:32:04       44 阅读
  2. C++学习笔记(十)

    2024-07-12 08:32:04       48 阅读
  3. C++学习笔记01

    2024-07-12 08:32:04       53 阅读
  4. C#学习笔记

    2024-07-12 08:32:04       56 阅读
  5. c# 学习笔记 - LINQ

    2024-07-12 08:32:04       55 阅读
  6. c++11学习笔记

    2024-07-12 08:32:04       68 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 08:32:04       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 08:32:04       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 08:32:04       57 阅读
  4. Python语言-面向对象

    2024-07-12 08:32:04       68 阅读

热门阅读

  1. 调整视频帧率、分辨率

    2024-07-12 08:32:04       29 阅读
  2. 路由器内部优先级和外部优先级的区别

    2024-07-12 08:32:04       27 阅读
  3. 嵌入式驱动程序100道面试题(6万字长文)

    2024-07-12 08:32:04       23 阅读
  4. Linux中防火墙firewalld

    2024-07-12 08:32:04       24 阅读
  5. 针对不支持AJAX异步查询的虚拟空间做跨站点查询

    2024-07-12 08:32:04       28 阅读
  6. docker 基础命令

    2024-07-12 08:32:04       24 阅读
  7. GPT-4o在Excel的应用

    2024-07-12 08:32:04       28 阅读
  8. Apache Web安全分析与增强

    2024-07-12 08:32:04       24 阅读
  9. 网络设备常见漏洞与解决方法

    2024-07-12 08:32:04       24 阅读