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++知识整理(一)的主要内容,如果未能解决你的问题,请参考以下文章

C++基础入门知识整理与总结

C++基础入门知识整理与总结

C++基础入门知识整理与总结

C++知识点整理

期末复习c++知识点大回顾,八篇文章让你永不破防(建议收藏)

期末复习c++知识点大回顾,八篇文章让你永不破防(建议收藏)