• 从零开始的c++(一)


    1.就业方向:游戏行业、后端、嵌入式等,需求相对少于java,但仍是很值得学习的一门语言。

    2.命名空间:

    常见的命名空间有 using namespace std;此处的std就是C++的标准库里的命名空间。

    命名空间的作用:命名空间可以让你自己创建一个独立的作用域,可以有效避免不同人写相同的函数名导致命名冲突。

    创建命名空间:

    1. namespace st
    2. {
    3. int rand = 1;
    4. int add(int a, int b)
    5. {
    6. return a + b;
    7. }
    8. struct node
    9. {
    10. int rand;
    11. char str;
    12. };
    13. }

    此处创建了一个名叫st的命名空间,空间内包含一个整形变量rand,一个函数add,一个结构体

    调用命名空间:

    1. void test()
    2. {
    3. printf("%d \n", st::rand);
    4. printf("%d \n", st::add(1, 2));
    5. struct st::node st;
    6. }

    此处是在函数内单独对每一个变量或函数说明其是命名空间st内的。

    1. using st::add;
    2. void test()
    3. {
    4. printf("%d", add(1, 2));
    5. }

    此处using st::add;用了部分展开,即从此往下调用add函数默认是调用命名空间st内的add函数。

    using namespace st;

    此处用了全部展开,此后调用命名空间内的变量、函数等可以忽略“st::"。

    注意:当使用部分展开或全部展开以后,必须确保不会再出现相同名、相同函数参数的函数,否则仍会出现函数调用不明确的错误。

    总结一下命名空间,就是类似额外开辟了一份单独的空间(作用域),然后定义了一些只能在这个空间内使用的成员。

    2.函数重载:

    函数重载的条件:1、函数名相同。2、函数的参数不同(形参类型不同或形参个数不同或形参顺序不同)。3、相同作用域。(注:返回类型不同不是重载的条件)

    函数重载的作用:获得同名但是效果不一定相同的函数。

    1. int add(int a, int b)
    2. {
    3. return a + b;
    4. }
    5. int add(double a, double b)
    6. {
    7. return (int)(a + b);
    8. }

    上述两个函数函数名均是add,但函数形参不同,因此是函数重载,此时根据传入参数的类型,编译器会选择合适的函数调用。

    3.函数参数缺省

    1. int add(int a=1
    2. {
    3. return a+1
    4. }

    函数缺省通常是在函数定义或者声明时(注:声明和定义中只能有一次用函数缺省),在形参的参数名后跟一个“=x”,此处x必须是常量或宏常量。此时使用该函数若不传这个参数则会默认参数的值是x,若传参数则参数的值就是传进来的。

    函数缺省的注意事项:1.从左侧第一个缺省参数开始往右所有参数都必须是缺省类型。

    2.函数使用的时候输入的数必须从最左侧的形参开始对应。不能出现第一个数对应形参第二个数等类似的情况。

    在了解了函数重载和默认参数后,也许会产生一个疑问,以下代码是否可以成功调用:

    1. int add(int a ,int b=2)
    2. {
    3. return a + b;
    4. }
    5. int add(int a)
    6. {
    7. return a + 1;
    8. }
    9. int main()
    10. {
    11. printf("%d ",add(1));
    12. return 0;
    13. }

    首先两个add函数的参数个数不同、作用域相同、函数名相同,因此是函数重载,但此时只传了一个参数,到底是调用只有一个形参的 int add(int a),还是当做一个参数是默认的int add(int a,int b=2)?答案是编译器无法确定,因此会报错。

    在本篇中,初步介绍了命名空间、默认参数和函数重载。

  • 相关阅读:
    基于Springboot自习预约管理系统
    【英语:发音基础】A4.基础词汇-常用动词
    【Vue项目复习笔记】滚动区域的Bug分析与解决
    Gartner最新报告:低代码应用开发平台在国内的发展
    Kotlin基础——接口和类
    c++中的pow函数
    python-web开发[13]之前端js
    git bash 的make 又在搞事情
    滑块视图的实现
    最长递增子序列
  • 原文地址:https://blog.csdn.net/yyssas/article/details/133392382