赞
踩
————————————— 一篇面向C++初学者的知识点/笔记总结————————————
注:本文内容主要面向C++初学者,整理了部分入门级知识点。文中会通过注释及实例去验证,建议读者在阅读时深入理解,自我实现代码的验证与理解。
begin:
1.C++于C的区别:
--》C++的使用和C比较类似,与C语言不同的点在于以下几点:
(1) C++是在C的基础上扩充了很多内容,功能更加强大;
(2) C++是完全兼容C的:C中合法的程序在C++中也是合法的;
(3) C++更注重面向结果,而C更注重面向过程1.
2.C++的第一个程序:
注:C++中的输入流为:cin>>要输入的内容
输出流为:cout<<要输出的内容
3.引用类型:
定义:给已经存在的变量起个别名,和变量指的是同一片内存空间;
格式:int a = 10;int&b = a; 即给变量a起了个别名叫做b;
引用的目的:弱化指针,减少临时空间的分配(定义指针需要分配内存空间,引用不需要);
引用和指针的区别(经典面试题)
(1)引用需要初始化,指针可以不初始化;
(2)引用只能初始化一次;
(3)指针可以改变指向,相比之下使用引用比指针更加安全;
(4)指针需要开辟空间,内存不需要
eg:使用引用和指针:
4.函数重载:
定义:函数名相同、功能类似、函数参数不同、与返回值无关(个数、类型、顺序)的一组函数互为重载
根据定义我们定义一组重载函数:
从这段代码中可以体现出函数重载的概念,这几个函数的功能都是求几个数的和,函数名也相同,
函数①和函数②的参数个数不同;函数①和函数③的函数类型不同,他们之间互相构成重载。
5.参数默认值:
定义:在定义函数的时候,给参数默认值
存在问题:调用重载函数时系统会不识别应该进行哪一个函数。
子函数中定义函数时,形参个数为3个,我们在调用这个函数时,给实参了两个参数,就会导致程序无法正常运行,如何解决这个方法呢?此时我们可以在定义函数时给子函数的形参给到默认值
给所有的参数一个默认值,就可以通过多种方式去进行调用!!!
需要注意的是:默认值给的顺序是从右往左,而我们在调用函数时,给参数的顺序是从左向右,特别是在函数重载时,一定要注意参数的默认值,否则容易产生“二义性”!!!
6.C++中引入C自定义的库
创建静态库的步骤:
(1)创建源代码.c文件 fun.c
(2)生成对应的.o文件:gcc -c fun.c -o fun.o
(3)生成静态库:ar crs libmyfunc.a(静态库名) fun.o(依赖文件)
(4)链接静态库:g++ main.cpp -L. -lmyfun
下面我们制作一个自定义静态库:
注:gcc编译,函数名不变;g++编译,函数名变化;
7.动态内存分布:
malloc free :在堆区分配、回收内存空间
new delete:运算符开辟、释放空间
(1)开辟、释放空间
(2)未初始化的结果(结果为随机值)
(3)初始化
8.类和对象
--》C++中的结构体和C中结构体的区别
(1)C中的结构体不能有函数,C++结构体中可以存在函数;
(2)C中空结构体的内存大小是0,C++中空结构体的内存大小是1
--》类:(关键字为class)把属性和行为整合在一起去描述一类事物的自定义的数据类型
--》对象:使用类定义出来的变量
9.构造函数和析构函数
构造函数:函数名和类名一致、无函数类型、参数不定的函数
析构函数:用来清理构造函数中有在堆区申请分配过空间的函数
注:(1)构造函数用来对数据进行初始化,在创建这个对象的时候就已经调用了,系统会帮我们调用,如果我们没有去定义构造函数,那么系统会设定一个默认的构造函数(无参数,函数体为空);(2)在对象生命周期结束时,系统自动调用,若用户未定义析构函数,系统会提供。
eg:构造函数和析构函数的示例:
emmm,先到这里吧......
the end;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。