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