当前位置: 代码迷 >> 综合 >> C++基本知识
  详细解决方案

C++基本知识

热度:16   发布时间:2023-11-21 14:25:35.0

第二周C++学习总结

继续了解了c++语言的内容
c++是c语言的一个超集,包含了c的所有特性,

  1. 1.结构,联合,和枚举名

这些在c++中,都是类型名,使用之前不同于c语言。不必再结构名,联合名或者枚举之前冠以structural,union或者enumerate。

例如:
enum Bool done;              //必须在枚举名前冠以关键词 enum
struct String str;                //必须在枚举名前冠以关键词 struct
union Number x;               //必须在枚举名前冠以关键词 union
在c++;
Bool done;
String  str;
Number x;
  1. 2.const修饰符号

c语言中习惯#define来定义常量;
const的作用与#define相似。但是const消除了#define的不安全性,

  1. 3.内联函数

在函数名前冠以关键词inline,该函数就被声明为内联函数。
内联函数主要是为了消除函数调用时候系统开销,以提高运行速度

最后一个结果和我们预期的不太一样,这就是define宏定义代码的不安全性
在这里插入图片描述
然而使用inline把这种给消除了。

4.重载函数

1.问题的提出:求最大值问题
(1) int Imax(int a[ ], int n); (2) double Dmax(double a[ ], int n);这两个函数的功能都是相同的,但是因为不同的函数名,给使用带来了不方便,特别是在调用这些函数的时候,要根据操作数的不同而选择应该调用那一个函数。

2.问题解决:
C++允许几个功能相似,但实现算法不同的函数在相同的作用域内以相同函数名定义,从而形成重载,以提高程序的可读性。
函数重载:两个以上的函数,取相同的函数名,但是形参的个数或类型不同。编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。

在这里插入图片描述
注意事项:
重载函数的形参必须不同: 个数不同或类型不同。
编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。

在这里插入图片描述5.带有默认参数值的函数
c++允许实参个数与形参个数不同,方法实在说明函数原型时(若没有说明函数的原型,则在函数定义时)为一个或者多个形参指定默认值,以后调用此函数时,若省略其中某一实参,则C++自动默认默认值作为相应参数的值。
例如:
void init(int x=5 , int y=10)
则之后x与y的值默认为5和10;

注意事项:
(1)函数原型中,所有取默认值的参数必须出现在不取默认值的参数的右边。
一旦开始定义取默认函数值,就不可以在说明非默认的参数

    int fun(int i, int j=5, int k);        ----错误应为:int fun (int i, int k, int j=5);
(2) 在函数调用时,若某个函数省略,则其后面的参数应该省略而采用默认值。不允许某个参数省略后,再给气候的参数指定参数值。例如,
不允许出现
init(,20)
**作用域标识符“ ::”**
*块作用域*

我们把用花括号括起来的一部分程序称为一个块。在块内说明的标识符,只能在该块内引用,即其作用域在该块内,开始于标识符的说明处,结束于块的结尾处。
在一个函数内部定义的变量或在一个块中定义的变量称为局部变量。在函数内或复合语句内部定义的变量,其作用域是从定义的位置起到函数体或复合语句的结束。形参也是局部变量。
使用的变量如果希望在局部变量的作用域使用同名的全局变量,可以在在该变量前面加上“::”,此时该变量待变同名的全局变量。

6.new和delete运算符
学习过c语言的时候,使用malloc()和free()来警醒动态内存的管理(即分配与释放)。c++则提供 new delete进行工作。
运算符new用于内存分配的最基本形式为:
指针变量名=new 类型;
运算符new可以自动计算
(1)内存类型的大小,不必使用sizeof()
(2)运算符new能正确返回指针类型的大小,而不必返回指针进行强制转换。
*注:*使用new需要使用delete运算符显式地释放,否则这部分空间将不能回收成为死空间
如果没有足够的空间分配,new将返回(NULL)。
7.引用
引用是c++对于c语言的扩充,引用就是变量的别名。

例如:
int i=5;
int &j=i;   //声明j是一个整型变量i的引用,用整形变量i对他进行初始化

j 是i 的别名而不是赋值,即使i的别名。

c++暂时写到此处,除了c++,PS也有了一些了解。