c++入门学习一——黑马c++视频的学习

一、c++基础教学视频笔记
5月16号
https://www.bilibili.com/video/BV1Tb411j7uM?p=1

  1. c++面向对象程序的设计,并不是代替c,而是对c的扩展。
    c++面向对象程序的设计,并不是代替c,而是对c的扩展。
    三大特性:封装、继承、多态
 #include<iostream>
  1.1 using namespace std;
  1.2 cout<<"heloo word"<<endl;
  1.3 system("pause")
  1.4 return 0
  1. ::双冒号作用域运算符
2.1全局作用域直接加::
  1. namespace 命名空间
namespace lol;

3.1.命名空间的主要用途是为了解决命名冲突的问题

3.2.命名空间必须定义在全局作用下
3.3命名空间可以嵌套命名空间,可以放入函数、类、变量、结构体。
3.4命名空间是开放的
3.5命名空间可以匿名的//无名,写了无名空间相当于定义了几个静态变量
3.6命名空间可以起别名 namespace 123=456,相当于两个都能用。

  1. using声明和using编译指令

4.1int id
4.2 using loi::id; :写了using loi::id声明后,下面的这行代码说明以后看到的id是用于lol下的,如果局部范围还有id,由于就近原则会出现二义性问题,要注意避免。
4.3 using namespace lol打开房间但是不代表用,继续采用就近原则,如果局部内还有定义的id,使用局部的id。
4.4 如果同时打开两个或者多个命名空间,不同空间内有相同的id,那么此时也会出现二义性问题

  1. c++对c的增强

5.1全局变量检测增强:C语言可以,c++要求严格。例如:int a; int a=10;c语言可以,c++不行
5.2函数检测增强:参数类型增强;返回值检测增强;函数传参个数检测增强
5.3类型转换检测增强:malloc 返回void,c中可以不用强转,c++必须强转
5.4struct增强 结构体增强:c++中可以有函数,c不可以;使用c必须加关键字struct,c++可以不加。
5.5bool类型增强:c语言中没有bool类型;true真(非0值),false假(0值)
5.6三目运算符增强:c中返回的是值,c++返回的是变量。

5.const增强

const int a=10;

const定义变量在C语言是伪常量,编译器分配内存,所以可以通过指针的方式修改,但是在c++中没有分配内存,储存的内部结构属于符号表,包括key和value,指针指向时,编译器会临时分配一个内存tmp储存定义的值,指针修改的是临时的值,以下几种是const定义变量分配内存的情况。
c++中const内部链接,C语言外部链接,extern提高作用域
const分配内存情况:

                              1.extern
                              2.int a=10 ;const int b=a;
                              3.自定义数据类型:如结构体
                              struct person
                              {
                                     string
                              }

6.引用的实质就是起别名。&写到左侧叫引用,写到右侧是取地址。引用的本质就是指针变量。

int &b=a;

6.1.1用途起别名
6.1.2Type(int/long) &别名 = 原名
6.1.3引用必须初始化://int &ref=10;语法错误,需要定义具有内存的部分,可以加const,或者定义变量。
6.1.4一旦初始化后 不能修改
6.1.5对数组建立引用的两种方法:

方法1.定义一个数组:int arr[10]
      int (&pArr)[自己定义数组的维度10]=自己定义的数组arr;
方法2.typedef int (ARRAYREF)[10];//一个具有10个元素的int类型的数组
      ARRAYREF   &pArr=arr;

知识补充
1.**const:**有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。const定义变量在C语言是伪常量,编译器分配内存,所以可以通过指针的方式修改,但是在c++中没有分配内存,储存的内部结构属于符号表,包括key和value,指针指向时,编译器会临时分配一个内存tmp储存定义的值,指针修改的是临时的值。上面写的有几种c++分配内存的情况。
2.**extern:**标准定义格式:extern 类型名 变量名;
如果在所有函数之外定义的变量没有指定其存储类别,那么它就是一个外部变量,它的作用域是从它的定义点到本文件的末尾(在单个源文件中的确是这样,如果有多个源文件,全局变量的作用范围不是从变量定义处到该文件结尾,而是在其他文件中也有效),但是如果要在定义点之前或者其他文件中使用它,那么就需要使用关键字extern对其进行声明。
3.**define:**尽量用const代替define,因为define没有说明类型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li_ao527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值