首页 > 编程语言 >C++入门基础

C++入门基础

时间:2024-09-06 20:52:51浏览次数:6  
标签:foo 入门 int 基础 C++ 重载 NULL 函数

6.C++入门基础

1.函数重载
1.什么是函数重载

函数重载是实现C++多态的一个重要技术,是在同一作用域内相同函数名 因为参数的类型不同或者个数不同 或者都不同 构成重载

2.C++是如何支持函数重载的
1.命名改变

根据对应的参数类名改成比如 void foo(int) void foo(double) _foo_int _foo_double

2.引用和指针
1.指针和引用的区别

指针是变量是类型是指向变量的内存地址,会占用内存,引用是变量的别名不占内存,与原变量共享内存

传地址起始是传的地址变量的拷贝,传引用就是传的别名都可以对其数据进行修改

引用必须初始化

2.引用的价值(做参数和做返回值)

做参数因为是传的别名不需要拷贝效率上相对较高;尤其是在传递较大的数据类型时,具有很高的效率,减少拷贝开销,可以修改原数据

做返回值 可以在外部直接修改内部数据 , 避免不必要的拷贝

   class MyData {
   private:
       int value;
   public:
       MyData(int val) : value(val) {}
       int& getValue() {
           return value;
       }
   };

   int main() {
       MyData data(10);
       data.getValue() = 20;  // 直接修改内部数据
       std::cout << data.getValue() << std::endl;
       return 0;
   }
3.建议用const enmu inline 去代替宏
1.宏缺点

宏不具备类型检查 不适合复杂的表达式 代码可读性不强 调试起来比较困难 不利于维护

2.inline要求

不用使用复杂的语句,尽量避免多重 if - else 的多重嵌套 和 for while等循环语句 要尽量精简

具备类型检查更安全

4.nullptr的意义是什么 – #define NULL 0 NULL定义存在缺陷

nullptr主要是解决C语言中NULL的问题 因为在C语言中NULL是宏定义的一个整形 其实就是0

在C++中如果使用NULL的话因为存在二义性 比如你在传参的时候 传一个NULL 但是这个函数重载过了 一个是int参数 一个是char* 就会去调用int参数的函数 ,所以需要nullptr来确切表示空指针

标签:foo,入门,int,基础,C++,重载,NULL,函数
From: https://blog.csdn.net/qq_31786089/article/details/141968994

相关文章

  • AI产品经理:零经验转行AI产品经理:从入门到精通的全面指南
    本篇文章来自于一个YouTube视频的内容,对于如何成为AI产品是一个很好的入门贴,这篇文章也是通过AI协助编辑过来的。通过这次编辑,也初步尝试了各大Chatbot的能力,总体体验,拥有长上下文能力的kimibot的体验最好,能将4000+字的英文完整翻译并进行初步的排版。但是通过这个......
  • MySQL基础(5)- 运算符
    目录一、算数运算符1.加法运算符2.乘除运算符3.取模运算二、比较运算符1.=<=><>!=<<=>>=2.ISNULL\INNOTNULL\ISNULL3.LEAST()\GREATEST()4.BETWWEEN条件下界1AND条件上界25.in(set)\notin(set)6.LIKE:模糊查询7.REGEXP\RLIKE:正则表达......
  • scala入门基础(1)
    一。思维导图   二。案例案例1.分别使用val和var定义一个变量name使用val同时声明多个变量。操作步骤:(1)打开Windows命令控制台,输入scala并按【Enter】键,进入Scala的解释器。(2)使用val定义一个变量name。输入valname="scala"并按【Enter】键,可以看到变量定义成功......
  • java集合基础练习题
    List集合.ArrayList,LinkedList,Vector三者的相同点与不同点?(“Vector”可百度)【面试题】共同点:他们都实现了List接口,意味着他们具有相同的基本操作,如添加、删除、获取元素有序性和可重复性,他们都是有序的,即插入顺序和迭代顺序相同,都允许存储重复的元素都可以动态调整大......
  • 数列分块入门
    分块是一种优秀的思想。“数据”是分块的目的。不同于大多数树形数据结构,分块中访问数据是容易的,因此,它可以用比前者更简单的方式支持复杂的操作。“标记”是分块最重要的过程。不同于大多数树形数据结构,分块大多数时候不需要支持标记与标记合并,因此,它能完成一些前者不能完成的......
  • Modern C++——使用分支预测优化代码性能
    大纲[[likely]][[unlikely]]样例应用场景题外参考代码参考资料在C++20中,新引入了一对属性关键字[[likely]]和[[unlikely]],它们用于为编译器提供关于代码分支执行概率的额外信息,以帮助编译器进行更好的优化。这对属性是基于长期实践中开发人员对程序执行路径的深入理解......
  • 枚举: C++和Python实现鸡兔同笼问题
    作者制作不易,关注、点赞、收藏一下吧!目录1.Python实现2.C++实现1.Python实现首先,我们需要输入头和脚的数量:head=int(input("请输入头的数量:"))feet=int(input("请输入脚的数量:"))input()实现输入,int()实现把字符串型(str)换为整型(int)。然后,进行循环......
  • c++的面向过程与面向对象
    面向过程与面向对象面向过程:在编程时重点考虑如何解决问题,以及解决问题的具体步骤。面向对象:在编程时重点考虑的是"谁"能解决问题(类、结构),以及"它"解决问题时所需要属性(成员变量)和功能(成员函数)。抽象:把“解决问题者”当作思考或观察对象,把解决问题所需的具备的属性和功能......
  • c++的类和对象
    类和对象什么是类把抽象结果(利用面向对象的思维模式,思考、观察出的结果),使用用C++的语法封装出一种类似结构的自定义数据类型(复合数据类型)。如何设计类struct结构名{  成员函数;//结构的成员默认访问权限是public  成员变量;};​class类名{  成员......
  • python测试开发基础---threading
    1.核心概念线程(Thread):线程是轻量级的进程,在同一进程内可以并行执行多个任务。线程共享进程的资源,如内存和文件描述符,但每个线程有自己的执行栈和局部变量。全局解释器锁(GIL):Python中的GIL限制了同一进程中多个线程的真正并行执行。它确保同一时间只有一个线程可以执行Pyth......