头文件与命名空间
C语言源文件 .c
C艹源文件 .cpp
理论上c艹兼容c,用.cpp写C语言没得问题还能减少一些莫名其妙的报错
- 包含头文件的方式
- 包含自己写的头文件C语言和c艹一样
#include"mycpp.h"
- 包含C语言库目录
- 可以按照C语言方式包含
- c艹包含方式 去掉.h在前面加c
-
#include<stdio.h>//c风格 #inlcude<cstdio>//c艹风格
-
- c艹自己的库目录
#include<iostream>
- 命名空间的使用
- namespace
-
/* 基本创建方式 namespace 空间名{} */ namespace GG { //空间成员/数据 int a; } namespace MM { int a; } GG::a=1; MM::a=2; //::作用域分辨符 namespace MV { void print();//空间里声明 } void MV::print(){ printf("MV"); }
- 作用域分辨符::
- 空间名限定,类名限定
- 用来标识全局变量
-
#include<iostream> int a=22; int main(){ int a=11;//采用就近原则,先在当前作用域找找不到再去包含本作用的作用域里去找(父级作用域) printf("%d",a); printf("%d",::a);//输出全局变量 return 0; }
-
- 访问空间里的东西必须加空间名
-
namespace GG { string name="杰帅"; } cout<<GG::name<<endl;
-
- using语法
- 可以省略命名空间名
-
#include<iostream> using namespace std; int main(){ int a; cin >> a; cout << a; return 0; }
cin和cout是命名空间std里的东西使用时必须加std例如:std::cin>>a;std::cout<<a;为了方便起见加入了using语法这就使得在使用中就不用加std::了仅限当前作用域出了当前作用域则无效
-
若在两个不同的命名空间中有相同的成员如果都使用了using语法则在使用时就得加入命名空间前缀编译器就不知道是用哪个(编译器傻得很)
-
- 可以省略命名空间名
-
命名空间可以嵌套
-
namespace A { namespace B { int a; } int b; } A::B::a; A::b;
-
基本输入和输出
-
cin
-
cout
-
#include<iostream> using namespace std; int main(){ int a; cin<<a; cout>>a; }
cin cout 如果不使用命名空间则在使用时应加入std::
-
新增数据类型
- string
字符串类型头文件#include<string>
- bool
布尔类型
只有两值(真,假)
函数思想
- 内敛思想
- inline关键字
- 函数重载
- 参数类型
- 参数数量
- 参数顺序
- 函数缺省
- 函数缺省必须从右往左
- 没有传入的参数使用默认值