• 【C++】


    目录

    命名空间

    C和C++区别

    结构体区别

    引用

    含义介绍

    引用和指针的区别

    参考文献


    简介

    • C:面向过程的思想,侧重于学习编程思想(函数设计)。
    • C++:面向对象的设计(不存,有源破坏了封装性),面向对象的思想(类的设计)。
    • C++兼容C语言
    • #include    //预处理(预编译)命令,std in/out 标准输入输出流。
    • #inlcude   
    • using namespace std;
    • < >   :库内头文件

      " "     :自己写的

    • istream类:输入流类
    • ostream类:输出流类
    • cout 是ostream类的对象,不是函数,是输出流的对象
    • endl 结束并换行
      • cout<
    • cin 是istream类的对象,不是函数,是输入流的对象
      • cin>>a;//输入a

    命名空间

    • 当C++工程较大时,程序内存在大量的变量、函数和类,如果这些变量、函数和类都存在于同一个作用域中,一不小心就可能会导致命名冲突。为了解决这个问题,C++引入了命名空间(namespace)这个概念,这样在不同的命名空间中允许存在同名的标识符。有了命名空间我们就可以在程序中有效地避免命名冲突,简易的说就是解决在使用时找不到名字的情况下,“词穷”。下面举一个利用命名空间解决命名冲突问题的例子。
      1. namespace AA
      2. {
      3.         void sort()
      4. {
      5. count<<"AA::sort()"<//输出结果用于验证
      6. }
      7.            
      8. //这个是AA::sort()
      9. namespace BB
      10. {
      11. void sort()
      12. {
      13. count<<"BB::sort()"<
      14. }
      15. //这个是BB::sort()
    • 定义了两个命名空间AA和BB,两个命名空间和主函数中都有sort()函数,但是并没有产生命名冲突,这就是使用namespace的好处。命名空间其实是对标识符的名称进行本地化,以避免命名冲突或名字污染
    • 使用:
      1. using namespace AA;
      2. void main()
      3. {
      4. sort();
      5. AA::sort();
      6. }//这两种都是调用AA里的sort()
      7. /*
      8. using namespace BB;
      9. void main()
      10. {
      11. sort();
      12. BB::sort();
      13. }//这两种都是调用BB里的sort()
      14. *

    C和C++区别

    结构体区别

    • struct Student
    • {
      };
    • C语言内
      • 结构体不可以为空,内部至少一个成员。
      • 上例所示,其中Student叫做结构体名
      • 结构体内不能有函数,成员不可以是函数。
    • C++内
      • 结构体可以为空,大小为1,1是占位符
      • 结构体内可以有函数。
      • 上例中,Student叫做类型名

    函数重载

    •  定义:函数名相同(同一个作用域),参数列表不一样
      1. struct AA
      2. {
      3. void fn()
      4. {
      5. }
      6. //这个叫做AA::fn
      7. }
      8. void fn()
      9. {
      10. }
      11. //这个叫做fn ::fn
      12. void fn(int a)
      13. {
      14. }
      15. //这个叫做fn ::fn
    • 上面三种均是函数重载
    • 函数名相同,函数参数列表不同
    • 不能通过函数返回值能确定是否重载
    • 举例说明:
    • 1:
      1. class Clock
      2. {
      3. public:
      4. void Set()
      5. {
      6. this->m_hour=12;//m_ :成员
      7. this->m_minute=20;
      8. this->m_second=30;
      9. }
      10. void Set(int h)
      11. {
      12. this->m_hour=h;
      13. this->m_minute=20;
      14. this->m_second=30;
      15. }
      16. void Set(int h,int m)
      17. {
      18. this->m_hour=h;
      19. this->m_minute=m;
      20. this->m_second=30;
      21. }
      22. void Set(int h,int m,int s)
      23. {
      24. this->m_hour=h;//m_ :成员
      25. this->m_minute=m;
      26. this->m_second=s;
      27. }
      28. void Show()
      29. {
      30. //输出
      31. cout<<this->m_hour<<":"<<this->m_minute<<":"<<this->m_second<
      32. }
      33. private:
      34. int m_hour;//m_ :成员
      35. int m_minute;
      36. int m_second;
      37. };
      38. void main()
      39. {
      40. Clock c,c1,c2,c3;//定义一个实际对象c。Clock:类,c:对象
      41. c.set();
      42. c1.set(9);
      43. c2.show(10,20);
      44. c3.set(20,14,20);
      45. c.show();
      46. c1.show();
      47. c2.show();
      48. c3.show();
      49. /*根据参数个数不同,分别调用不同函数。
      50. 输出结果为:
      51.         12:30:30
      52.         9:20:30
      53.         10:20:20
      54.         20:14:20*/
      55. }
      • 上面的4个set()函数是函数重载 
      • 这个情况下不是:
      • 2:
      1. class Clock
      2. {
      3. public:
      4. void Set()
      5. {
      6. this->m_hour=12;//m_ :成员
      7. this->m_minute=20;
      8. this->m_second=30;
      9. }
      10. void Set(int h)
      11. {
      12. this->m_hour=h;
      13. this->m_minute=20;
      14. this->m_second=30;
      15. }
      16. };
      17. void Set(int h,int m)
      18. {
      19. this->m_hour=h;
      20. this->m_minute=m;
      21. this->m_second=30;
      22. }
    • 因为的clock里的public的set()外部应叫做Clock::Set(),而不是set(),因此两个函数名不一致,不属于函数重载

    引用

    含义介绍

      1. int &b=a;
      2. b=10;
      • 取地址在赋值号右边,声明时的&是引用
      • b是a的引用(b是a的别名) 
      • b有内存单元
      • 改变b的值,a也会改变。b=20,a=20。
      • 引用必须在声明的时候必须初始化,不能写int b;
      • b会随着a的消亡而消亡,没有空引用。

    引用和指针的区别

    • 声明时,引用必须初始化,指针可以不初始化
    • 指针可以为空,引用不可以为空
    • 指针可以修改指向,引用不可以为空
    • 指针大小永远为4字节,引用大小和实体大小一致。

    参考文献

    命名空间

  • 相关阅读:
    Java项目:96 springboot精品在线试题库系统
    炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办!
    C#与欧姆龙PLC实现CIP通讯
    怎么让英文大预言模型支持中文?(二)继续预训练
    人机交互——对话管理
    网络安全(黑客)自学
    ROS(0)命令及学习资源汇总
    springboot大学生课堂考勤管理系统的设计与实现
    Spring动态代理源码分析
    apache开启https
  • 原文地址:https://blog.csdn.net/qq_53830608/article/details/126978887