rain-xuan 发表于 2021-7-21 17:52

夯实基础之C++_day1

本帖最后由 rain-xuan 于 2021-7-21 17:55 编辑

# DAY1

## C++简介(了解)

* **C++在C语言的基础上添加了面向对象和泛型编程的思想**

## 始与`hello world`(掌握)

~~~C++
#define _CRT_SECURE_NO_WARNINGS//允许使用通用库
#include <iostream> //输出输出头文件

using namespace std;//命名空间

int main()
{
    cout << "hello world!" <<endl;
    system("pause");
    return EXIT_SUCCESS;
}
~~~

## 面向对象的三大特性(了解)

1. 封装(抽象)
2. 继承
3. 多态

## 命名空间(重点)

### 名字的控制

* **为了解决多人协作命名标识符时重复的bug**

### 什么是命名空间

~~~c++
namespace A{
    int a;
    void fun()
    {

    }
}
~~~

### 命名空间的注意事项

1. **命名空间只能写在全局**
2. **命名空间可以嵌套命名空间**

    ~~~c++
    namespace B{
      int b;
      namespace C{
            int c;
      }
    }
    ~~~

3. **命名空间是开放的,可以随时添加新成员,但是只能在添加后使用该成员**

   ~~~c++
   namespace A{
       int d;
   }
   ~~~

4. **匿名命名空间等同于静态全局变量`namespace {int a;}`<=>`staic int a`目的是为了限制变量只能在该文件下被使用,外部不能使用**

5. **命名空间可以取别名**

   ~~~c++
   namespace STD{
       int a;
   }
   void test()
   {
       namespace Std = STD;
       cout << Std::a << endl;
   }
   ~~~

6. **分文件编写代码时,在.h头文件中如果两个不同名的命名空间中存在了同名变量或者实现同名方法,在.h的方法实现.cpp文件中要加上命名空间的作用域才行,否则会报出`erro LINK`无法解析的外部符号的错误**

    ~~~c++
    //.h文件
    //#pragma once
   
    #ifndef __namespace_H
    #define __namespace_H
    #include <iostream>
    using namespace std;
    namespace test1{
    //int ma; 错误,在包含此头文件时,会在预处理时展开头文件,会出现重定义的错误
    void func(); //函数声明重定义多次被允许
    }
    namespace test2{
    void func();
    }
    #endif
   
    //.cpp文件
    #include "namespace.h"
   
    void test1::func()
    {
      cout << "I am test1->func" << endl;
    }
   
    void test2::func()
    {
      cout << "I am test2->func" << endl;
    }
   
    //main.cpp
    #include "namespace.h"
   
    int main()
    {
      test1::func();
      test2::func();
      return EXIT_SUCCESS;
    }
    ~~~

### 作用域运算符

~~~C++
namespace A{
    int e = 10;
}
int k1 = 10;
int main()
{
   int k1 = 20;
   cout << k1 << endl;//就近原则,输出20
   cout << ::k1 << endl; //全局变量的作用域
   cout << A::e << endl; //命名空间A的作用域中的变量
   return EXIT_SUCCESS;
}
~~~

* *用来访问某个命名空间中的变量的*

* 嵌套的命名空间的访问
`sp::A::a`,其中sp是最外层的空间名,A是内部的空间名,而小a则是A内部的变量名

飘零星夜 发表于 2021-7-21 18:05

排版好乱啊啊,楼主

等一个Timing 发表于 2021-7-21 19:50

这缩进,血压上来了

tlf 发表于 2021-7-21 20:39

薇尔莉特 发表于 2021-7-21 22:31

登月的猫 发表于 2021-7-21 22:35

哈哈,以前学过C++,特来看看热闹

zxsbk 发表于 2021-7-22 00:44

先学习一下

KyXueYuneEr 发表于 2021-7-22 00:46

好东西呀,看看~

zhangchong5522 发表于 2021-7-22 08:12

哎,C++是真的废头发

又红又专 发表于 2021-7-22 08:51

顶多坚持7天 不是我瞎说
页: [1] 2
查看完整版本: 夯实基础之C++_day1