**本文章总览**
一、同名实体:同名函数、变量、类定义
二、命名空间:为了防止同名冲突而引入的一种机制,系统中可以定义多个不同名的命名空间
1.定义方式
//在practice_1中
namespace one
{
void print()
{
cout << "one" << endl;
}
}
2.引用方式:
(1)引用与main()同一个cpp文件中的函数,方法是 命名空间名::实体名
(2)引用不同cpp中的函数,方法是在一个头文件中写:
//在head1.h中
namespace one
{
void print();
void say_hi();
}
namespace two
{
void print();
}
(3)引用时
//在main()中
int main(void)
{
using namespace one;
using namespace two;
one::print(); //由于one 和two中有同名print()函数,因此要用one::或two::标明
two::print();
say_hi();
return 0;//main()中返回值一般表示状态,返回0表示成功,非0一般表示有些错误。这种返回值一般在windows下么啥用,在linux中有用处
}
三、基本输入输出std::cin、std::cout、std::endl
1.std是标准库命名空间
2.::称之为作用域运算符
- std::end的作用
(1)输出换行符"\n"
(2)强制刷新输出缓冲区,缓冲区里的所有数据都被系统清除了
***输出缓冲区:一段内存。cout输出的时候实际是往缓冲区输出内容
那么输出缓冲区什么时候把内容输出到屏幕呢?
①缓冲区满了
②程序执行到main()的return语句
③调用std::endl
④当系统不太忙时,系统会查看缓冲区内容,发现新 内容会往屏幕上输出
4.<< 返回的是一个cout对象,读以下代码可以轻松理解
cout << "我" << "好" << "想你" << endl;
//等价于
(cout << "我" )<< "好" << "想你" << endl;
//等价于
((cout << "我") << "好") << "想你" << endl;
5.std::cin的使用
int a, b;
cin >> a >> b;//返回齐左侧运算对象
//相当于
(cin >> a) >> b;
6.赋值
int a = 1;
int b{
1 };
int c= {
1 };
int c(1);
auto d{
1.1 }; //自动推断,要记得在定义时赋值
7.头文件防卫声明
#ifndef HEAD_1
#define HEAD_1
#include"head_2.h"
namespace one
{
void print();
void say_hi();
}
namespace two
{
void print();
}
#endif
8.引用
int a = 1;
int& b = a; //现在b是a 的别名,起标识作用。和auto一样的,定义别名时必须赋值
b = 2; //现在a也等于2了
//int& c = 1; //但是别名不能绑定到常量上
***引用和指针在函数中的使用
void func(int& a, int& b) //形参是引用类型
{
a = 1;
b = 2;
}
void func_1(int* a, int* b) //形参是指针类型
{
*a = 3;
*b = 4;
}
int main(void)
{
int m, n;
func(m, n);
func_1(&m, &n);
***引用绑定到const常量上的方法
const int m = 1;
int& m_1 = (int&)m;
m_1 = 100;
cout << m;//1
cout << m_1;//100
9.constexpr
constexpr int func()
{
return 1;
}
int main(void)
{
constexpr int a = func();
cout << a << endl; //1
}
10.范围for
int a[]{
1,2,3,4