初识C++

一、什么是C++

C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式

等。

二、C++关键字(C++98)

我们目前只了解有多少关键字,具体使用方法以后会慢慢了解。

三、命名空间

1.为何要引入命名空间

我们先给出一个代码来认识为何需要命名空间:

#include<stdio.h>
#include<stdlib.h>
int rand = 10;
int main() {
    printf("%d", rand);
    return 0;
}

运行结果:

我们发现编译器提示我们rand重定义。可是我们只定义了一个参数rand,这是为什么呢?

因为在头文件stdlib.h中拥有获取随机数的函数rand(),与参数rand命名冲突。所以C++为了解决这个问题引入关键字namespace。

2.命名空间的定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}

中即为命名空间的成员。

namespace lht {
    int rand = 10;
    int add(int left, int right)
    {
        return left + right;
    }

    struct Node {
        struct Node* next;
        int a;
        int b;
    };
}


namespace thl {
    int rand = 20;
    int sub(int left, int right)
    {
        return left - right;
    }

    struct Node {
        struct Node* next;
        int c;
        int d;
    };
}

不同命名空间内属于不同作用域,所以不同作用域内可以定义相同名字的变量。

在一个工程内,命名空间也可以嵌套使用,编译器会将他们合并成同一个命名空间

namespace N1 {
    int rand = 10;
    int add(int left, int right)
    {
        return left + right;
    }
}
namespace N1 {
    int sub(int left, int right)
    {
        return left - right;
    }
}
namespace N1 {
    int mul(int left, int right)
    {
        return left * right;
    }
}

注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。

3.命名空间的使用

#include<iostream>
namespace lht {
    int a = 0;                  //命名空间中的a变量
    int b = 1;
    int add(int left, int right)
    {
        return left + right;
    }
}
int a = 999;                    //全局变量a
int main() {
    int a = 10;                 //局部变量a
    printf("%d", a);
    return 0;
}

我们不难知道,在同时拥有局部变量和全局变量的情况下,会使用离自己近的变量(就近原则)。

为了使用其他作用域的变量我们可以加入作用域限定符::来使用其他变量。

int main() {
    int a = 10;
    printf("a=%d", ::a);
    return 0;
}

在变量前加入作用域限定符::就可以使用全局变量

int main() {
    int a = 10;
    printf("a=%d", lht::a);
    return 0;
}

在变量前加入命名空间名称+作用域限定符就可以使用命名空间内的变量

但当我们这样使用命名空间数据时

int main() {
    int a = 10;
    printf("a=%d", lht::a);
    printf("a=%d", lht::a);
    printf("a=%d", lht::a);
    printf("a=%d", lht::a);
    printf("a=%d", lht::a);
    return 0;
}

我们发现使用起来十分麻烦十分不友好。c++还提供了使用using 将命名空间某个成员引入

我们也可以将命名空间直接展开使用他的全部成员

这几种方式都可以使用命名空间成员。

C++输入&输出

C++第一个程序

#include<iostream>
using namespace std;
int main()
{
    cout << "hello world!" << endl;
    return 0;
}

这里std就是C++的标准库的命名空间C++标准库的定义都在std中。

说明:
使用cout(标准输出对象)和cin(标准输入对象)时,要包含头文件<iostream>,以及命名空间std。
endl是C++中的特使符合,代表换行输出,也包括在<iostream>中。
使用C++输入输出更方便,不用像C那样控制数据格式。

#include<iostream>
using namespace std;
int main()
{
    int a;
    double b;
    char c;
    cin >> a >> b >> c;
    cout << a<<" " << b <<" " << c;
    return 0;
}

std使用惯例:

std是C++标准库的命名空间,如何展开std使用更合理呢?
1. 在日常练习中,建议直接using namespace std即可,这样就很方便。
2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对
象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模
大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 +
using std::cout展开常用的库对象/类型等方式。

C++的初步学习,如有纰漏,还望不吝赐教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶丨之秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值