好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 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内部的变量名
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|