【C++ 基础】从C到C++有哪些变化

C到C++

复制代码
	C++相比C语言来说,多了两个核心,五个内容:
		1、面向对象的思维;2、模板(泛型编型)
		1.bool 2.引用 3.内联 4.重载 5.缺省参数

变量


数据类型 bool

  • 布尔 占1个字节 取值:true false

    复制代码
      bool isMax(int a, int b)
      {
      	return a > b;
      }

引用 为变量取别名

  • typedef int HP;//为类型取别名

  • *三种:乘号,解引用,指针

  • &三种:位与,取地址,引用

    复制代码
     void mySwap(int a, int b)//值传递
     {
     	int temp = a;
     	a = b;
     	b = temp;
     }
    
     void mySwap(int *pa, int *pb)//址传递
     {
     	int temp = *pa;
     	*pa = *pb;
     	*pb = temp;
     }
    
     void mySwap(int &a, int &b)//引用传递
     {
     	int temp = a;
     	a = b;
     	b = temp;
     }
  • 函数的值拷贝,如果是一个结构变量,尽量使用指针

  • 在C++里面,除了指针拷贝之外,还可以使用引用。使用指针和引用效率是一致

  • 指针和引用的区别:

    复制代码
    1、指针是一个有内存的实体,引用只是一个外号
    2、引用是常量,常量必须初始化赋值
    3、指针可以赋空
    4、指针内存唯一,引用不唯一

函数


内联函数

  • 通过内存膨胀来减少函数的跳转

    函数前面加关键字inline (空间换时间)

    复制代码
      inline int myAdd(int a, int b)
      {
      	return a + b;
      }
  • 内联的缺点

    复制代码
      1、如果函数内的函数体代码比较长,不建议内联
      2、函数体内有循环,不建议内联什么时候用内联:简单的赋值语句,及返回数据(函数体极少,使用频率高,用内联)
    
    
    
      int playHp = 0;
      inline int GetIndex(int num)
      {
      	return num % 10;
      }
    
      inline void SetValue(int v)
      {
      	playHp = v;
      }

函数重载

  1. 函数

    把代码的模块化为工具,以此增加代码的复用性

    复制代码
     int myAdd(int x,int y)//计算两整型数据和的工具函数
     {	
     	return x+y;	
     }
  2. 函数重载

    一个函数名对应多个函数体,什么情况下构成重载:满足两个条件:

    -函数名一致

    -参数列表不一致

    复制代码
     1.参数对应位置类型不同
     2.参数的个数不同

    例如

    复制代码
     int myAdd(int x,int y)   double myAdd(double x,double y)   int myAdd(int x,int y,int z)
     {                        {                                 {
         return x+y;                 return x+y;                    return x+y+z;
     }                        }                                 }

    注意:和函数返回值没有关系

  3. 重载的应用

    复制代码
     #include<iostream>
     using std::cout;//using namespace std;
     using std::endl;//前一种命名空间方式要安全
     int myAdd(int x,int y)
     {
         return x+y;
     }
     double myAdd(double x,double y)
     {
         return x+y;
     }
     int myAdd(int x,int y,int z)
     {
         return x+y+z;
     }
     int main()
     {
     	cout<<myAdd(1,2)<<endl;
     	cout<<myAdd(1.1,2.2)<<endl;//注意小数在编译过程中,会被看作double类型,float类型需要在小数后加f
     	cout<<myAdd(1,2,3)<<endl;	
         return 0;
     //使用重载函数时,注意类型转换带来的错误
     }

函数缺省参数

  1. 缺省参数

    函数在定义形参时给出初始值

    复制代码
     int myMul(int x,int y=9)
     {
         return x*y;
     }
  2. 注意事项

    -参数的缺省只能从后往前,依次缺省,不能从前往后

    复制代码
     int myMul(int x,int y=9,int z)
     {
     	函数体
     }
     //错误的写法

    -参数的缺省,在只有定义的情况下可以在写在定义上,如果有声明,只要在声明中缺省,不要在定义中缺省

    复制代码
     #include<iostream>
     using std::cout;
     using std::endl; 
     int myMul(int x,int y=9);//函数声明
     int main()
     {
     	cout<<myMul(4)<<endl;
         return 0;
     }
     int myMul(int x,int y=9)//函数定义
     {
     	return x*y;
     }
     //编译报错:重定义默认参数 : 参数 2

    -函数的参数缺省与重载混合使用时,一定要注意参数缺省导致重载的二义性

    复制代码
     #include<iostream>
     using std::cout;
     using std::endl;
     int myMul(int x,int y)
     {
     	return x*y;
     }
     int myMul(int x,int y,int z=9)
     {
     	return x*y*z;
     }
     int main()
     {
     	cout<<myMul(2,3)<<endl;
    
     	return 0;
     }
     //提示错误:对重载函数的调用不明确
  3. 缺省参数的应用

    复制代码
     #include<iostream>
     using std::cout;
     using std::endl; 
     int myMul(int x,int y=9)
     {
     	return x*y;
     }
     int main()
     {
     	cout<<myMul(4)<<endl;
     	cout<<myMul(4,6)<<endl;//6会覆盖9
         return 0;
     }
相关推荐
库玛西6 小时前
外部排序全解析:败者树、置换-选择排序与最佳归并树
c语言·数据结构·c++·笔记·考研·算法
General_G7 小时前
创建型模式—原型(Prototype)模式
c++·设计模式·原型模式
syagain_zsx7 小时前
protobuf 实战:从 .proto 到 C++ 序列化的完整链路
c++·学习·程序人生·谷歌·protobuf
welfare9628 小时前
新号别搞:C++_list
开发语言·c++
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》云端 API 调用基础与 Apifox 调试实战
网络·c++·语言模型
坤坤子吖8 小时前
Linux 线程同步与互斥——条件变量与线程同步
linux·开发语言·c++·笔记·学习
杜 硕8 小时前
从零开始的C++生活——第二讲——03
c++·生活
布莱克60510 小时前
QtWidgets 与 QML:两大 UI 开发框架的全面对比
开发语言·c++·qt·ui·架构
hetao173383710 小时前
2026-10-20 hetao1733837 的刷题记录
c++·算法
x10n911 小时前
微软 VC++ 运行库合集VCRedistPack
开发语言·c++·microsoft·vc++运行库·dll报错