首页
论坛
课程
招聘
[看雪20年] [分享]命名空间 引用 auto笔记
2021-5-4 22:29 792

[看雪20年] [分享]命名空间 引用 auto笔记

2021-5-4 22:29
792

语法糖相当于零食。普通语法相当于主食。

auto 关键字

auto n = 6 ; //类型占位符,类型推导符,跟住右值得类型,推到出左值得类型。
image.png
auto 推导出类型之后, 不会再改变。

decltype

1
2
3
decltype(a) n0 = 8;
decltype(b) d0 = 3.14;
decltype(sz) sz0 = "hahha";

跟住括号里面得变量推导 类型。

 

范围迭代
ary[10] = { 1,2,3,4,5,6,7,22};
for (auto xx : ary)
{
std::cout << xx << std::endl;
}

命名空间:

解决命名冲突得问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace Helloword
{
    int a = 999;
 
    void fun()
    {
        printf("hello word1111\r\n");
    }
 
    typedef void (*pfn)();  
}
 
using namespace Helloword;
int main()
{
    Helloword::pfn xx = fun;
    xx();
 
    std::cout << "Hello World!\n";
}

全局作用域能做的 ,命名空间也能做到。
using namespace xx;等于一个开关,下面得语句就能使用命名空间得内容。

 

还有一种,只打开某个变量内容得开关.

1
2
3
4
5
6
7
8
9
10
11
using Helloword::a;
using Helloword::fun;
 
int main()
{
    int c= a;
    Helloword::pfn xx = fun;
    xx();
 
    std::cout << "Hello World!\n";
}

命名空间还可以拆分:
在命名空间里面再定义命名空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace Helloword
{
    int a = 999;
    void fun()
    {
        printf("hello word1111\r\n");
    }
    typedef void (*pfn)();
 
    namespace Helloword2
    {
        int on = 99;
    }
}
 
// using namespace Helloword;
int main()
{
    Helloword::pfn xx = Helloword::fun;
 
    int ccc = Helloword::Helloword2::on;
 
 
    std::cout << "Hello World!\n";
}

命名空间可以嵌套
命名空间可以起别名:**

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
namespace Helloword
{
    int a = 999;
    void fun()
    {
        printf("hello word1111\r\n");
    }
    typedef void (*pfn)();
 
    namespace Helloword2
    {
        int on = 99;
    
}
namespace diaonilaomu = Helloword;
 
// using namespace Helloword;
int main()
{
    diaonilaomu::pfn xx = Helloword::fun;
 
    int ccc = Helloword::Helloword2::on;
 
 
    std::cout << "Hello World!\n";
}

引用

C++提出解决指针得问题,野指针,空指针。
释放对空间时候 没有初始化 可能会造成野指针

 

引用就是给变量起别名,必须初始化。
引用没有多级引用。
引用不可以改变引用得内存地址,指针可以。
引用不能修改引用的对象(变量)

 

引用可以用于所有的类型。
引用不可以类型交叉,可以强转,但是不安全,精度丢失或者 越界。

 

###

引用与指针的区别

const int xx = 4,编译器把这个当成常量来使用 ,不能修改。类似宏
const int & n = 4. 常量引用可以引用常量,不能赋值,不能改变。

 

参数传引用,在编译器层面相当于传指针。


第五届安全开发者峰会(SDC 2021)议题征集正式开启!

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回