C++入门基础

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来确切表示空指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值