C++知识整理(一)
Posted DangerousIdeas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++知识整理(一)相关的知识,希望对你有一定的参考价值。
第一章:概述
面对对象程序设计的基本特征:抽象、封装、继承、多态。
面向对象程序设计设计方法的主要优点:提高程序的重用性、控制复杂性、改善可维护性、支持大型程序设计、增强处理信息范围、很好适应新的硬件环境。
第二章:C++概述
预处理命令:
①#include
using namespace std;
②#include
输出:cout<< 输入:cin>>;允许连续输入cin>>a>>b>>c;
dec:转换基数为十进制,hex:转换为十六进制,oct:转换为八进制
当类的对象是有限且固定的,使用枚举类就比较方便
例如 enum Bool{FALSE,TRUE};
C语言和C++定义常量
#define limit 100;和const int limit=100;
例如:
main()
{int a=1;#define t1 a+a;#define t2 t1-t1;
cout<<”t2 is “<<t2<<endl;< span=""></t2<<endl;<>
return 0;
}
程序语句解释为:cout<<”t2 is “<<< span="">a+a-a+a<<endl;< span=""></endl;<>
const与指针使用用法详解
①指向常量的指针(变量)
则:name[3]=’a’;//错误,不允许改变指针所指的常量
则:name[3]=’a’;//合法,可以改变指针所指的数据
③指向常量的常指针
const char * const name=”chen”;//name及name[3]不可有改动
当const定义一个整型常量,int可省略,
当const表示在函数体中,表示只能读取,不能修改
例如:int max(const int *ptr)//定义函数,原型声明
调用:max(a)
函数原型的声明
C中:
int add(int a,int b);//某个函数完整的声明
int add( );//简略的声明,不列出参数表
add( );//当返回类型为int型,还能再一步省略
int add(int,int);//只包含参数类型,也可
int add(int a,int b=1);//合法
int add(int a=1,int b);//不合法;
一旦为某个给定参数定义了缺省值,后继的所有参数也要定义缺省值。
C++和C函数参数表区别
C中f(void);/*表示不带参数*/ f();/*表示参数信息未知,可能带参数
C++中f(void);/*表示不带参数*/ f();/*表示不带参数*/
内联函数:消除调用函数时的系统开销,提高运行速度,关键词”inline”
1.使用时不能有静态变量;2.不能有复杂的流程控制,如循环体
3.不能递归;4.不能定义数组
带有默认参数的函数
例如
int special(int x=5,float y=5.3,int m=2)// 函数原型,默认参数值已给
special(100,79.8,6)//默认参数值已给
special(25)//参数值25,5.3, 2
special(9, 4.2)//参数值9,4.2, 2
special( ,6, )//错误
使用指定默认值的参数必须放在形参列表中的最右端,否则出错;在函数调用时若某个参数省略,其后的参数也应省略,采用默认值
函数重载
C语言:函数不允许重载
C++:允许重载,只要满足函数参数类型或者参数的个数不同,可以使用相同的函数名,
但是①当参数类型和参数个数相同,只有返回值类型不同,不允许重载
②当函数重载和带默认参同时用,可能有歧义
例如:int drawcircle(int r=0;int x=0;int y=0);和int drawcircle(int r);
当执行drawcircle(20)就会歧义
③函数调用时,形参和实参类型不符,虽会自动转换,但可能会产生不可识别的风险
例如:void fun(int r);和void fun(long r);
当执行int c=fun(2.26)就会歧义,不知该转换为int还是long
作用域运算符::
通常两个同名变量,一个全局一个局部,则局部变量在其作用域内有更高的优先权。
如果希望在局部变量作用域内使用同名的全局变量,可在该变量前加作用域运算符“::”,
强制类型转换:
如:int i=10;double x=(double) i;
int i=10;double x=double(i);//更建议用这种方法,比较像执行了一个函数;
运算符new和delete
C语言使用malloc和free动态分配内存和释放动态分配的内存。
C++更多地使用new和delete进行内存的释放和分配。
指针变量名=new 类型;delete 指针变量名;
*p=10;delete p;//在该内存块赋予初值10,随后释放空间
① new为数组动态分配空间,需要在类型名后缀上数组大小
如:int *p=new int[10];
② new也可以分配空间时进行初始化,形式:指针变量名=new类型(初值)
int *p; p=new int(99);
③释放数组存储空间可用格式:delete [ ]指针变量名;
④必须手动delete释放
引用:相当于别名,引用运算符&
类型 &引用名=已定义变量名
int i;int &j;j=i;//错误,没有指明j代表哪个变量
非法引用:
①不允许建立void类型的引用;如void &r=10//错误
②不能建立引用数组;如int a[4]=”abcd”; int &ra[4]=a;//错误
③不能建立引用的引用,不能建立指向引用的指针
int n =10;int &&r=n;/*错误,不能建立引用的引用*/ int &*p=n;//错误,不能建立指向引用的指针
引用返回函数值:int &index(int){return a(i);}//定义函数返回整型引用,等价返回a[i]
以上是关于C++知识整理(一)的主要内容,如果未能解决你的问题,请参考以下文章