C++ 上篇

简介: C++ 上篇

C++ 上篇


1.语言中的数据成分

2.语言中的运算成分

3.语言中的控制成分

4.语言中的传输成分 函数的传参机制


C++中的数据类型

   1.该类型的所占内存大小

   2.基于该类型的运算方法

   int i;  +-*/%

   float f; +-*/

   3.对数据类型进行检查

   3.14*2*2


关键字 32 19


   signed unsigned static

   sizeof   关键字 运算符

基本数据类型

   整形

       布尔    bool    1byte   8bit

       字符    char    1byte   8bit

       短整形  short   2byte   16bit

       整形    int     4byte   32bit

       长整形  long    4byte   32bit

   浮点

       单精度  float   4byte   32bit

       双精度  double  8byte   64bit

扩展数据类型

   数组    []

   指针    *

   void

   string

   自定义数据类型

       结构体  struct

       枚举    enum

       联合    union

       类      class


变量 -->内存空间

int a = 3+4;

变量名

   不能是关键字

   字母/_ + 字母/_/数字

   区分大小写

   abc   ABC

类型 变量名;


计算机对内存是如何管理组织的


   bit

   8bit    1byte   一个字节

   32/64   一个机器字  Byte


   1G = 1024M = 1024*1024K = 1024*1024*1024byte


   100Mbit/8   12M


   32计算机 访问的最大内存 G  

   4G


   2的32次方  = ?G

   2的10次方  = 1024

   1G=2的30次方


   1k = 1024byte

   1kg = 1000g


变量的输入 ,输出

   cout 输出流对象

   cin  输入流对象


   int a;

变量信息表示

   所有的整形,浮点,字符,图片,视频,语音

   man ascii

==============================================================

基于基本数据类型上的运算


   sizeof 变量 类型 常量

   sizeof(3.14) = 8


算术运算

   + - * / %


   n%7  ==> [0, 6]

   n%10 ==> [0, 9]

   n%32 ==> [0, 31]


   n = rand();

   n%32  [1-32]+

     32/7  [1-32]


     1.0-42亿

     n

   1.运算两边的类型不一致,如果不一致编译器会将其转换同一类型,运算后也是该类型


   2.编译器隐式转换规则

       a.整形转浮点

       b.小的转大的

       c.有符号转无符号

赋值运算 =

   将=右边的值 复制到=左边的变量(内存空间)中


   int i = 3.14;

   char c = i;

   i = 10; ==> 10 = i;

============================================================

关系运算

   > < >= <= != ==


分支语句

   if      单分支

   if(条件语句)

   {

       条件为真执行的语句

   }


   if(条件语句)        双分支

   {

       条件为真执行的语句

   }

   else

   {

       条件不为真执行的语句

   }


   switch case         多分支

   switch(条件)

   {

       case 1:

           break;

       case 2:

           break;


       default:


   }

gg=G 对整个代码进行缩进

逻辑运算

   && || !

==============================================================

自增自减

   ++ --

   i++ ==> i = i + 1


   前置    先自增自减,再赋值使用

   后置    先赋值使用,后自增自减

循环语句

   for(三条语句,由两个分号分隔)

       1.第一条语句,循环变量初始化语句

       2.第二条语句,循环条件语句

       3.第三条语句,循环变量修改语句

   for(int i = 0; i < 100; i++)

   {

       循环条件为真,需要循环执行的语句

   }

   注意:

       1.for()后没有分号

       2.for后面的循环体,如果有多条语句用{}括起来

       3.for()中可以没有语句,里面一定要有分号

       for(;;) ==> 死循环

       break;  循环体中只要执行到break语句,整个循环结束

数组

   int a[10];

   a[0]

   ...

   a[9]

   a[10] 段错误或不确定值

   变量没有初始化,里面的值是不确定的

===============================================================

以窗口方式打开终端 Ctrl + Alt + t

以标签方式打开终端 Ctrl + Shift + t

切换标签 Alt + 数字

补全 tab

终止当前终端的程序 Ctrl + c


1.多个.cpp文件编程

   函数

   实现两个数的和


1.数据成分

2.运算成分

3.控制成分

4.传输成分

 模块之间的数据传递

 

   函数之间的数据传递


       局部变量:声明在函数内部的变量/{}内部的变量

           只能被当前函数所访问==》作用域

           生命周期==》内存什么时候产生,什么时候释放

           {}进入大括号    退出大括号

       全局变量:不在函数内部声明的变量

           能被当前文件所有函数所访问==》作用域

           整个程序==>当程序运行的时候,开始

                      当程序结束的时候,释放

   函数的传参机制

       1.传值

           函数的内部语句,要修改函数外部变量的内容 ?

       2.地址 ==>指针

           int i = 10;

           &i

           int *pi = &i;  // 指针变量

       3.数组

       4.引用 ==>

   文件之间的数据传递 ==>多文件编程

===============================================================

库 .o

   printf()-->printf.o-->libc

动态内存分配

   标准C库函数

   malloc  ==> new

   free    ==> delete

   sizeof

===============================================================

struct声明的成员和函数,默认为public 公开

class声明的成员和函数,默认为private 私有

成员变量:属性

成员函数:方法/行为

函数的默认参数

   声明函数的时候,加默认参数

   定义函数的时候,不需要指定默认参数

   如果没有实参,使用默认参数的值

   如果有实参,使用实参的值

   默认参数可以赋值为全局变量,全局表达式,函数调用

   有默认参数的形参必须在最右边

函数的重载

   函数名相同,形参类型不同,这样的函数形成重载

   函数名相同,形参个数不同,这样的函数形成重载

   函数名相同,返回值类型不同,这样的函数不能形成重载

回顾:

   类 和对象


   构造函数

       没有返回值

       函数名跟类名一致

       可以重载

       如果用户没有自定义一个拷贝构造函数,

       编译器会准备一个默认的拷贝构造函数

   析构函数

=================================================================

回顾:

今天:

   拷贝构造

   系统默认的为浅拷贝

   可以自定义一个深拷贝

   对象指针

   对象数组


   this 指针

   静态成员static(静态数据成员,静态函数成员)

   static 修饰变量:

           局部变量:作用范围限定在当前作用域{},

                     生命周期是整个程序的生命周期

           全局变量:生命周期是整个程序的生命周期,

                     作用范围只限定于当前文件访问

                     不会对其他文件的命名产生冲突,

                     不污染全局命名的空间

         

           修饰函数:生命周期是整个程序的生命周期

                     作用范围只限定于当前文件访问

                     不污染全局命名空间


    类 成员

    static  成员变量

               存储特性跟static修饰的局部变量一样,

               全局生命周期,即可以通过类名作用域访问,

               也可以通过对象访问

               Student::count;

               Student s;

               s.count


   static 成员函数

               静态成员函数只能操作静态成员变量,

               没有this指针,不能操作普通成员变量

   友元

       友元函数

       友元类

==================================================================

继承 extends

   类一般声明方式:

       class 类名 :<继承方式> <基类>{

       <访问属性> public private protected(没讲)


       声明一个类的时候,没有说明访控属性,默认是什么?

       class   ==> private

       struct  ==> public

       };

       有哪些<继承方式>:public private protected

       如果没写继承方式,默认的继承方式是private

父类的访控属性      继承方式        子类的访控属性

public              public          public

protected           public          protected

private             public          不可访问

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

public              private         private

protected           private         private

private             private         不可访问

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

public              protected       protected

protected           protected       protected

private             protected       不可访问

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

总结:

   1.父类是private,无论通过什么方式继承,子类均不可访问

   2.无论父类public或protected,经过private,子类都是private

     无论父类public或protected,经过protected,子类都是protected

目录
相关文章
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
12535 1
|
2月前
|
人工智能 自然语言处理 定位技术
从功能到场景:2025年数字人平台排名与实用推荐全攻略
面对繁多数字人平台,如何选型?本文从生成效率、质量、集成度等五大维度,深度评测2025年主流平台。必火AI凭借全链路智能创作、1分钟克隆+3分钟成片的高效流程,适配个人IP、企业营销、培训等场景,荣登榜首。附实用选型指南,助你精准决策,开启高效内容创作新时代。(238字)
464 41
在鸿蒙开发中实现自定义进度条
前些天发现一个问题,鸿蒙官方的进度条组件Progress虽然提供了比较丰富的功能,但是有时候还是不能满足开发的需要。
|
UED 开发者
移动应用性能优化实战
移动应用性能优化实战
325 89
|
消息中间件 存储 Cloud Native
基于 RocketMQ 的云原生 MQTT 消息引擎设计
本文将介绍阿里云如何将 Serverless 架构应用于消息队列,有效降低运营成本,同时利用云原生环境的特性,为 IoT 设备提供快速响应和灵活伸缩的通讯能力。
511 114
|
数据采集 数据可视化 前端开发
深入了解埋点分析:Clklog助你优化用户体验
所谓埋点,就是通过在应用程序或网站中插入代码,针对用户行为或事件进行捕获,以收集用户的各种行为数据,比如用户点击了某个按钮、页面访问时间、功能使用频率等。 通过分析这些数据,数据产品经理或数据分析师能够深入理解用户行为,优化用户体验,并根据埋点数据改进产品功能。
深入了解埋点分析:Clklog助你优化用户体验
|
Rust 关系型数据库 调度
【一起学Rust | 进阶篇 | Fang库】后台任务处理库——Fang
【一起学Rust | 进阶篇 | Fang库】后台任务处理库——Fang
540 0
|
数据采集 编解码 数据可视化
空间单细胞|10x Visium数据分析、可视化与整合(1)
空间单细胞|10x Visium数据分析、可视化与整合(1)
|
存储 运维 NoSQL
分布式表的写入流程
分布式表的写入流程
188 2
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
1644 1