吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1939|回复: 19
收起左侧

[C&C++ 转载] 夯实基础之C++_day1

[复制链接]
rain-xuan 发表于 2021-7-21 17:52
本帖最后由 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内部的变量名

免费评分

参与人数 6吾爱币 +1 热心值 +6 收起 理由
wf1123 + 1 + 1 用心讨论,共获提升!
DIKE + 1 用心讨论,共获提升!
luoye1997 + 1 谢谢@Thanks!真的是太感谢了亲
amen5555 + 1 热心回复!
tomcar + 1 用心讨论,共获提升!
tlf + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

飘零星夜 发表于 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天 不是我瞎说
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 08:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表