当前位置: 首页 > news >正文

C++ 初阶必学:namespace 命名空间,缺省参数,函数重载,引用的概念与定义。

namespace

思路讲解:

一句话:namespace 就是给代码「加个文件夹」,防止名字撞车。

举个生活例子:

  • 你们班有个叫「张三」的同学

  • 隔壁班也有个「张三」

  • 直接喊「张三」,大家都不知道你喊谁

但如果说:一班的张三二班的张三,就完全不会混淆。

代码实现:

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> // 必须引入头文件 using namespace std; // 展开std命名空间(简化写法) // 语法:namespace 命名空间名 { 成员(变量/函数/类等) } namespace MySpace { // 命名空间内的成员 int my_rand = 10; // 可以和全局的rand同名,不会冲突! } // 全局作用域的rand,和命名空间内的完全独立 int my_rand = 20; int main() { // 访问命名空间成员:必须用 命名空间名::成员 (作用域解析符::) cout << "命名空间内的rand: " << MySpace::my_rand << endl; // 输出10 cout << "全局的rand: " << my_rand << endl; // 输出20 cout << "你好,世界" << endl; return 0; }

注意:#include<iostream>是C++的头文件

using namespace std是展开std命名的空间,其中count,endl在std空间里面。

缺省参数

思路讲解:

缺省参数(也叫默认参数),就是你在声明或定义函数时,给函数的参数指定一个默认值

核心逻辑:

  • 调用函数时

    • 如果你传了实参:就用你传的那个值。

    • 如果你没传实参:编译器就自动用那个预设的默认值

代码实现:

#include<iostream> using namespace std; void Func1(int a = 1, int b = 2, int c = 3) { cout << "Func1:" << a << " " << b << " " << c << endl; } void Func2(int a, int b = 20, int c = 30) { cout << "Func2:" << a << " " << b << " " << c << endl; } int main() { cout << "全缺省参数" << endl; Func1(); Func1(2); Func1(2, 3); Func1(2, 3, 4); cout << "半缺省参数" << endl; Func2(1); Func2(1, 2); Func2(1, 2, 3); return 0; }

函数重载

思路讲解:

C++ 允许在同一个作用域里,定义多个「名字完全相同」的函数,但要求它们的「形参列表」不一样(参数个数不同 / 类型不同 / 顺序不同)。

这是 C++ 区别于 C 语言的核心特性之一:C 语言不支持同名函数,C++ 支持,靠的就是函数重载

代码实现:

int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } int main() { cout << "add(1, 2) = " << add(1, 2) << endl; cout << "add(1.1, 2.2) = " << add(1.1, 2.2) << endl; return 0; }

引用的概念与定义

思路讲解:

引用不是新定义一个变量,而是给已存在的变量取了一个别名。编译器不会为引用变量开辟独立的内存空间,它和原变量共用同一块内存。

代码实现:

#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; //int main() //{ // int a = 10; // int& b = a; // // // cout << &a << endl; // cout << &b << endl; // b = 20; // cout << a << endl; // return 0; //} //void swap(int& x, int& y) //{ // int tmp = x; // x = y; // y = tmp; //} // //int main() //{ // int x = 1; // int y = 2; // swap(x, y); // cout << x << endl; // cout << y << endl; // return 0; //} //typedef struct ListNode //{ // int val; // struct ListNode* next; //}LTNode,*PNode; // ////ListNode** PNode* LTNode** //void ListPushBack(PNode& phead, int x) //{ // PNode newnode = (PNode)malloc(sizeof(LTNode)); // newnode->val = x; // newnode->next = NULL; // if (phead == NULL) { // phead = newnode; // } // else { // // 遍历到尾节点,插入新节点 // PNode cur = phead; // while (cur->next) cur = cur->next; // cur->next = newnode; // } //} //// 传值返回:返回临时变量,无法修改原数组元素 //int SLAt(SL& sl, int i) { // assert(i < sl.size); // return sl.a[i]; //} // //// 传引用返回:返回原元素的引用,可直接修改 //int& SLAt(SL& sl, int i) { // assert(i < sl.size); // return sl.a[i]; //} // 用法:传引用返回可以直接赋值 //SLAt(sl, i) += 1; // 直接修改原数组第i个元素 //错误引用 //int& func() { // int ret = 0; // 局部变量,函数结束后内存销毁 // // ... // return ret; // 返回局部变量的引用,本质是野引用 //}不能返回引用值 // //int main() { // int& x = func(); // x是ret的别名,但ret的内存已经被销毁 // cout << x << endl; // 结果不可控,可能是随机值,程序崩溃 // return 0; //} //struct A { // int arr[1000]; // 大数组,传值拷贝成本极高 //}; // //// 传引用:零拷贝,直接操作原对象 //void func(A& aa) { // // 直接修改原对象 //}
http://www.jsqmd.com/news/584437/

相关文章:

  • OpenClaw技能组合:Qwen2.5-VL-7B多模态任务链设计
  • Linux设备驱动 -- TMP75AIDR驱动移植
  • 2026年诚信的佛山现代风家具/佛山定制家具稳定供货厂家推荐 - 品牌宣传支持者
  • OpenClaw可视化监控:Qwen3-14B任务执行实时看板搭建
  • JDK-02 | 我为什么越来越喜欢用 Java 的 Text Blocks
  • # 高质量数据集核心问题解析
  • 盈鹏飞T527评估板AHD摄像头实战:从硬件连接到QT界面调试全流程
  • 安装Ubuntu后安装ros一键操作
  • OpenClaw小团队协作:Phi-3-mini-128k-instruct共享技能库的搭建方法
  • Claude Code 创始人再放狠货!15 个隐藏功能曝光
  • ASTM D4169针刺棉手袋的产品有效期验证方案
  • SEO_避开常见SEO误区,让你的优化更高效
  • OpenClaw跨平台配置:Qwen2.5-VL-7B在mac与Windows的对接差异
  • 大数据可视化
  • 【第五周】关键词解释:稀疏自编码器(Sparse Autoencoder,简称 SAE)
  • 一季度书单 | 2026年,你的思维方式,该变了!
  • Bili2text:B站视频转文字终极指南,3步实现高效内容提取
  • 市场知名的光伏项目品牌找哪家
  • 第五天(实习无忧)
  • GNU C扩展特性在Linux内核中的高效应用
  • ZXPInstaller完整指南:Adobe扩展安装的终极解决方案
  • 域名 WHOIS 信息对于 SEO 优化有什么作用
  • 作业04.02
  • MySQL概述
  • 【C++八股】【欧弟求职】左值、右值、右值引用
  • 双模型协作方案:OpenClaw同时接入Phi-3-vision-128k-instruct与Qwen的配置技巧
  • 海南自由贸易港借助“.CN”域名塑造线上专属品牌形象
  • 开了一个新号...
  • 一键部署体验:星图平台OpenClaw镜像+Qwen3.5-9B-AWQ-4bit沙盒测试
  • 2026年知名的佛山极简风家具厂家对比推荐 - 品牌宣传支持者