const在不同位置时的不同意义

  • 指针类型前:声明一个指向常量的指针,程序中不能通过指针来改变它所指向的值,但指针本身的值可以改变,即指针可以指向其他数据;
  • "*"号和指针名之间,声明一个指针常量(常指针),指针本身的值不可改变,即不能指向其他数据,但指向的数据的值可以改变;
  • 两个地方都加,声明指向常量的指针常量,指针本身的值不可改变,指向的数据也不能通过指针改变;

函数指针

  • 使用函数指针之前,必须先赋值,使它指向一个函数入口地址,赋值语法格式为:函数指针名 = 函数名,其中函数名代表的函数必须是一个已经定义过的,和函数指针具有相同返回类型的函数,指针调用函数格式:(*指针变量)(实参列表);

访问权限

  • public:可被任意实体访问;
  • protected:只允许本类及子类的成员函数访问;
  • private:只允许本类的成员函数访问;

构造函数

  • 创建对象时,自动调用构造函数,不能在程序中直接调用,可有任意类型参数,但不能有返回类型;
  • 构造函数作用:为对象分配空间、为数据成员赋初值、请求其他资源;
  • 构造函数工作:初始化虚函数表、建立基类对象、建立非静态数据成员对象、安置虚基类对象信息、执行构造函数体中的代码;
  • 若一个类中没有定义构造函数,编译器会自动生成不带参数的默认构造函数,格式为:
<类名>::<默认构造函数名>()
{
}

析构函数

  • 析构函数作用:清除对象、释放内存;
  • 析构函数工作:执行析构函数中的代码、将对象占据的存储空间归还系统、做公共及用户要求的善后工作;
  • 析构函数无参数和返回值,一个类中只能定义一个析构函数,故不能重载,格式为:
~<类名>();

内存布局

  • 全局数据区:存放全局变量、静态数据、常量;
  • 代码区:存放类成员函数、其他函数代码;
  • 栈区:存放局部变量、函数参数、返回数据、返回地址;
  • 堆区:自由存储区;

运算符重载重载形式

  • 重载为类的成员函数,参数个数比原来的运算数少一个
<函数类型> operator <运算符> (<形参列表>)
{
<函数体>;
}
  • 重载为类的友元函数,参数个数与原运算数个数一样多;
friend <函数类型> operator <运算符> (<形参列表>)
{
<函数体>;
}
  • 函数重载:返回值类型可以相同可以不同,但形参列表一定不同;

静态数据成员

  • 初始化格式:<类型><类名>::<静态数据成员>=<值>;
  • 引用格式:<类名>::<静态数据成员>;

继承方式

  • 私有继承private:父类的公有成员和保护成员作为子类的的私有成员,且不能被子类的派生类访问;
  • 公有继承public:父类的公有成员和保护成员作为子类的成员时,仍保持原有状态,父类私有成员仍为私有;
  • 保护继承protected:父类的公有成员和保护成员成为子类的保护成员,且只能被他的派生类成员函数或友元访问,父类私有成员仍为私有;

派生类构造函数调用顺序:

  • 调用基类的构造函数,调用顺序按继承时说明的顺序;
  • 调用子对象类的构造函数,调用顺序按在类中说明的顺序;
  • 派生类构造函数体中内容;

函数模版

template < 模板形参表 >template <typename T>
返回值类型 函数名(形式参数列表)
{
    函数体语句
}
例:
template <typename T>
void swap( T& v1, T& v2)
{
    T temp;
    temp = v1;
    v1 = v2;
    v2 = temp;
}

虚函数

  • 虚函数必须是类的成员函数,不能是友元,但可以是另一个类的友元,不能为全局函数,也不能为静态函数,析构函数可以为虚函数,但构造函数不能为虚函数;

变量初始化

  • 局部变量:定义时,系统不会进行初始化;
  • 全局变量:定义时,系统自动初始化,

友元函数

  • 在类中定义过,但不是成员函数,定义在类外部,但有权访问类中成员;

this指针

  • 只有成员函数才有this指针,友元函数没有this指针;

静态成员函数与普通成员函数区别:

  • 静态成员函数没有this指针,只能访问静态成员(包括静态成员变量和静态成员函数);
  • 普通成员函数有this指针,可以访问类中任意成员,而静态成员函数无this指针;
    微信公众号:村雨1943
    创作不易,未经同意,转载请注明出处~

C++知识点总结篇的更多相关文章

  1. 25、前端知识点--webpack篇之面试考点

    前端面试之webpack篇 https://blog.csdn.net/sinat_17775997/article/details/78122999 关于webpack的面试题 随着现代前端开发的复 ...

  2. 前端经常碰到的小知识点-----js篇

    一    js 1.可视区宽和高 ① document.documentElement.clientWidth  //可视区的宽度 document.documentElement.clientHei ...

  3. C语言知识点总结篇

    Debug和Release版本比较 Debug附加了许多调试信息,主要用于调试,故文件大: Release是经过优化后的版本,去掉了调试信息,代码进行了优化,故文件较小,且编译速度快过Debug,用于 ...

  4. java基础 小知识点汇总篇

    1.&和&& |和|| 的区别? a&b,会执行a,执行b ,得出结论 a&&b,会执行a,如果a false,则不执行b,直接返回false 2.Ma ...

  5. Python知识点总结篇(五)

    软件目录结构规范 目标: 提高可读性: 提高可维护性: 常见结构 Demo/ |-- bin/ #存放项目的一些可执行文件 | |-- demo #可执行程序,启动demo调main.py | |-- ...

  6. Python知识点总结篇(二)

    列表 列表:一个值,包含多个字构成的序列,用[ ]括起来,[]是一个空列表,不包含任何值,类似于空字符串,负数下标表示从后边开始,-1表示列表最后一个下标,它是一种可变的数据类型,值可以添加.删除或改 ...

  7. Python知识点总结篇(三)

    文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量: 通过句柄对文件进行操作: 关闭文件: with:自动关闭文件: with open('log', 'r') as f: ... 文件 ...

  8. Python知识点总结篇(四)

    递归 特性 必须有明确的结束条件: 每进入深一层递归,问题规模比上层应有所减少: 递归效率不高,层次更多会导致栈溢出: def calc(n): print(n) if n // 2 > 0: ...

  9. Python知识点总结篇(一)

    Python基础 变量 变量类型: 1.数字型 整形:int: 浮点型:float: 布尔型:bool,True和False: 复数型:complex: 2.非数字型 字符串: 列表: 元祖: 字典: ...

  10. JAVA知识点总结篇(三)

    抽象类 使用规则 abstract定义抽象类: abstract定义抽象方法,只有声明,不需要实现: 包含抽象方法的类是抽象类: 抽象类中可以包含普通方法,也可以没有抽象方法: 抽象类不能直接创建,可 ...

随机推荐

  1. kubernetes 1.14安装部署helm插件

    简单介绍: Helm其实就是一个基于Kubernetes的程序包(资源包)管理器,它将一个应用的相关资源组织成为Charts,并通过Charts管理程序包.再简单点说,可以当做RHEL/CentOS系 ...

  2. laravel 存储base64格式图片

    laravel 存储base64格式图片 一.总结 一句话总结: 用正则替换base64图片编码的编码头即可 存储图片的话,用laravel可以用Storage的put方法,原生php可以用file_ ...

  3. JSON HiJacking攻击

    JSON劫持类似于CSRF攻击,为了了解这种攻击方式,我们先看一下Web开发中一种常用的跨域获取数据的方式:JSONP. 先说一下JSON吧,JSON是一种数据格式,主要由字典(键值对)和列表两种存在 ...

  4. 关于PHP中token的生成的解析

    背景 很多时候我们需要用 token 来作为一些标识, 比如: 一个用户登录后的认证标识. 实现方式 md5 的方式: $v = 1; // 自己定义的 需要hash 的value 值 $key = ...

  5. locust性能测试脚本模板

    locust性能测试脚本模板 #!/usr/bin/env python # -*- coding: utf-8 -*- import time from locust import HttpLocu ...

  6. 空指针异常 自动拆箱 防止 NPE,是程序员的基本修养 本手册明确防止 NPE 是调用者的责任。

    空指针异常 空指针异常是指java中的异常类.   中文名 空指针异常 外文名 NullPointerException 当应用程序试图在需要对象的地方使用 null 时,抛出该异常.这种情况包括: ...

  7. windows mysql绿色版配置Mysql5.7.X

    MySQL绿色版安装,很简单按照下面的方式很快就可以实现了. 1.下载地址 https://dev.mysql.com/downloads/mysql/ 百度网盘链接:https://pan.baid ...

  8. Fiddler抓包显示请求时延

    两种方式:配置和加代码.配置只是将隐藏的时延字段显现了出来,格式没法改:加代码就随你写了,格式自己说了算. 先说配置的,在左边框顶部字段名称右击鼠标 -> 点击Customize colums. ...

  9. python flask框架学习(一)——准备工作和环境配置与安装

    Flask装备: 学习自:知了课堂Python Flask框架——全栈开发 1.Python版本:3.6 2.Pycharm软件: 3.安装虚拟环境: (1)安装virtualenv: pip ins ...

  10. git 更新fork的远程仓库

    1.添加远程仓库到本地remote分支 git remote add upstream git@github.com:apache/flink.git # 远程仓库地址 2.查看当前仓库的远程分支 g ...