C++入门知识总纲

C语言是C++的一个子集。所有C语言支持的语法在C++都基本支持并需要使用。

    C                                    C++
  基本类型&变量                      
  运算符&表达式             类和对象     
  语句控制                  继承、多态
  函数&程序控制             模板、泛型编程
  指针&数组                 异常处理
  结构                      C++库、标准模板库STL
  输入输出                 
  C库函数                 
  C++数据类型分为基本类型、和非基本类型(内置类型、自定义类型)
基本类型:char int  float double bool void
非基本类型: 数组type[]、指针type*、结构体struct、联合体union、枚举enum、类class。
内置类型:C++基本的数据类型称为内置类型,语言内部定义的    基本类型  。
自定义类型:自己定义的类型、struct/class/enum/union等定义的类型就是自定义类型。

命名空间 : 给同作用域提供相同名字的变量而存在的。
可以自己设定不同的命名空间,  可以访问某个指定的命名空间,如using namespace MY;
也可以通过作用域访问符》::  (两个冒号)+变量名。 来访问指定命名空间的。

命名空间域和全局域是可以同时存在的,但是加上using namespace之后,就会目标不明确;如下代码所示;


     
这样就会报错,a:不明确的符号。因为全局变量和MY命名空间同时存在, 此时只要注释掉24行选中代码,就可以正常运行。



C++基本的输入输出流:
  输出流:cout<< 
  输入流:cin>>     
输入和输出时,直接写变量名,C++会自动处理,不需要描述输入输出的数据类型。省去了指定输入输出类型的步骤。
重载:
C++支持重载,重载是在同一个作用域,函数名相同,但是参数类型、参数列表不同既可构成重载,返回值不在重载判断条件之中。
C++为什么支持重载?
C++支持重载是因为C++的函数名的修饰规则;
C++在编译的过程中:  函数名的组成由函数名传参数个数和传参类型所构成。所以之所以支持重载就是因为编译后的函数名不同,C语言不支持重载是因为没有函数名修饰规则。
例如:有函数 
int Add(int x,int y)
{  return x+y ;}
int Add(int a,int b,int c)
{return a+b+c;}
因为参数个数不同,函数名相同,Add函数构成重载。

传参缺省:
函数传参缺省,如上图,传参缺省可以从右往左连续缺省(Add1、2),但是不可以缺省最左边,不缺省右边的;如Add3;
因为参数传参是会有歧义。C++语法规定。
指针和引用
概念和使用:
引用是对变量的一个别名,而不死定义一个新的变量,是给变量起了一个另外的新名字,
定义格式为: 类型&新名字=已定义过得名字;
例如:int a; int &b=a;
特殊例子:
a=b; 将不同类型的b赋值给a,b会生成一个临时int类型的变量,(支持但可能会存在数据丢失),临时变量具有常性,是用const修饰的,所以引用的类型也必须加上const,所有24行代码错误,25行代码正确。此时的引用是double类型生成的临时变量的别名,而不是b的别名。
做参数:
引用做参数的时候传的是类型的别名,可以达到和指针类似的效果,利用变量的别名对变量进行操作,可以达到修改变量的作用,与指针用地址操作效果类似。
做返回值的作用:
引用做返回值可以提高效率,因为函数返回变量时会生成一个临时变量,用临时变量作为函数的返回时,如果用引用返回,就会返回改变量的别名,但是要求出了函数作用域该变量还存在。不然就会越界。
引用时要小心空指针。
指针和引用的区别:
1.引用只能在定义时初始化一次,之后不能指向其他变量。指针变量的值是可变的。
例如:  int a=10; int &b=a; int *p=&a;   b只能是变量a的别名,不能变成其他变量的别名,但是p指针可以更改指向其他变量。
2.引用必须指向有效的值(确定到底是谁的别名),指针可以为空。
例如: int a;     int&b;b=a; 是错误的。 引用必须初始化,确定你到底是谁的别名。
3.sizeof 指针对象和引用对象的意义不同。
4.指针引用自增自减的意义不同。
5.引用比指针更安全。  
6.引用是别名,指针是地址。从语法上讲引用是不需要开辟空间的,指针需要开辟,但是从底层内存上看,引用的的实现就是利用指针实现的。
但是指针比引用更加灵活,但也更危险。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值