目录
1.c++与c语言的头文件区别
2.c++的命名空间
3.命名空间内容的使用
空间名的可省略
结构体的使用
嵌套的使用
4.c++标准的输入和输出
输出
输入
5.函数的使用
函数重载
函数缺省
c++与c语言的头文件区别
- c++的
#include
- 你会发现每一个cpp文件都会有一个 io流 的包含文件
c++ 独有的包含方式 c语言
#include 相当于 #include
#include #include
#include"myhead.h" 访问本目录的头文件 和c语言一样
#include".mm.h" 同上
#include"head.hpp" 只有c++才有的特殊引用方式
- .h换成c+头文件名
c++的命名空间
namespace 奇美拉 {
char name[9] = { "1阿尼亚" };
struct mm;
int x;
void print() {
printf("1库吉n");
}
}
namespace 妹妹 {
char name[9] = { "2阿尼亚" };
struct mm;
int x;
void print() {
printf("2库吉n");
}
}
namespace A {
int a = 1;
namespace B {
int b = 2;
}
}
- 用C语言的知识理解是:
- 关键字 namespace 标识符 奇美拉 (我用的中文字符,这个随便)花括号{}
- 组成了一个大的框架
- {} 里面放的是内容 包含有:
- 各种各样的变量;
- 结构体;
- 函数;
- 甚至 嵌套另一个空间;
命名空间内容的使用
printf("%s", 奇美拉::name); //这里除了上面的结构体其他都有使用案例
printf("%d", 奇美拉::x);
奇美拉::print; //用函数
- ::
- 是作用域分辨符
- 空间名 ::成员名
空间名的可省略
using namespace 空间名; 加上这句代码 在该区域内使用空间元素就不需要 空间名::
using namespace 奇美拉;
奇美拉::print();
print();
上面两句代码就等同
奇美拉::print();==print();
- using namespace 空间名;
- 这句代码适用于某作用域
- 如果在函数中 只适用于该函数
- 如果在全局中 适用于全局
using namespace std;
一个特殊的命名空间 std
这一句代码在以后会经常看见
结构体的使用
namespace 奇美拉 {
char name[9] = { "1阿尼亚" };
struct mm {
int a;
int b;
};
int x;
void print() {
printf("1库吉n");
}
}
int main (){
struct 奇美拉::mm MM= {1,2}; 记住 struct mm 这两部分合在一起才是类型关键字
printf("%dn",MM.a);
printf("%sn", 奇美拉::name);
return 0;
}
- 在空间里的struct 这里要注意如何初始化
- 要使用的话直接 变量名.元素就行
- 结构体的使用 先声明 后定义
- struct mm{
- int a;
- int b;
- }//类型先声明
- struct mm MM={1,2};//定义
嵌套的使用
namespace A {
int a = 1;
namespace B {
int b = 2;
}
}
printf("%d", A::B::b); //打印 b
c++标准的输入和输出
cout << "你好n";
cout << 1;
cout << "n";
cout << "n" << "姓名" << "t" << "性别";
cout << endl;
输出
- c + out <<
- 即cout+左移 字符 后面跟任何你要输出的形式
- 形式一定要正确
cout << "打印字符串n"; //打印字符型
cout << 10086<<"n"; //打印整型
cout << 1.1111<<"n"; //打印实型
cout << 'a'; //打印字符
cout << endl; //endl==换行符
cout << "你好" << 007 << 't' << endl;
//多个类型一起输出
- 多个类型一起输出时 用<<连接
- endl =="n"作用相同
输入
- c+in >>
- 即cin+右移 字符
char i; //
cin >> i; //输入字符
cout << i << endl;
int x;
cin >> x; //输入整型
cout << x<> y;
cout << y << endl;
- 首先要声明 变量
- 然后使用就行
函数的使用
函数重载
函数重载 可以出现相同名字的函数
数目不同
void print(int a) {
printf("%dn",a);
}
void print(int a,int b) {
printf("%d %dn", a,b);
}
类型不同
void print(int a, int b) {
printf("%d %dn", a,b);
}
void print(char a, char b) {
printf("%c%cn", a,b);
}
顺序不同
void print(char a, int b) {
printf("%c%dn", a ,b);
}
void print(int a, char b) {
printf("%d%cn", a,b);
}
- 以上全是相同函数名的函数 但是形参的数量、类型、顺序不一样
- 顺序不同时,多个参数的类型要求要不一样才可以
函数缺省
void test(int a , int b =22, int c = 33, int d = 44) {
printf("%d %d %d %dn",a,b,c,d);
}
test(1); 其对应结果分别是 1,22,33,44
test(1, 2); 1, 2,33,44
test(1, 2, 3); 1, 2, 3,44
test(1, 2, 3, 4); 1, 2, 3, 4
- 怎么理解?
- 就是在函数传参时 给其赋值
- 假如参数的数量像上面的代码一样
- 1个参数 传参数a,其他的用原始参数
- 2个参数 传参数a,b,其他的用原始参数
- 3个参数 传参数a,b,c,剩下的用原始参数
- 4个参数 传参数a,b,c,d
- 打印出的结果完全不一样
namespace 奇美拉 {
char name[9] = { "1阿尼亚" };
struct mm;
int x;
void print() {
printf("1库吉n");
}
}
namespace 妹妹 {
char name[9] = { "2阿尼亚" };
struct mm;
int x;
void print() {
printf("2库吉n");
}
}
namespace A {
int a = 1;
namespace B {
int b = 2;
}
}
- 用C语言的知识理解是:
- 关键字 namespace 标识符 奇美拉 (我用的中文字符,这个随便)花括号{}
- 组成了一个大的框架
- {} 里面放的是内容 包含有:
- 各种各样的变量;
- 结构体;
- 函数;
- 甚至 嵌套另一个空间;
命名空间内容的使用
printf("%s", 奇美拉::name); //这里除了上面的结构体其他都有使用案例
printf("%d", 奇美拉::x);
奇美拉::print; //用函数
- ::
- 是作用域分辨符
- 空间名 ::成员名
空间名的可省略
using namespace 空间名; 加上这句代码 在该区域内使用空间元素就不需要 空间名::
using namespace 奇美拉;
奇美拉::print();
print();
上面两句代码就等同
奇美拉::print();==print();
- using namespace 空间名;
- 这句代码适用于某作用域
- 如果在函数中 只适用于该函数
- 如果在全局中 适用于全局
using namespace std;
一个特殊的命名空间 std
这一句代码在以后会经常看见
结构体的使用
namespace 奇美拉 {
char name[9] = { "1阿尼亚" };
struct mm {
int a;
int b;
};
int x;
void print() {
printf("1库吉n");
}
}
int main (){
struct 奇美拉::mm MM= {1,2}; 记住 struct mm 这两部分合在一起才是类型关键字
printf("%dn",MM.a);
printf("%sn", 奇美拉::name);
return 0;
}
- 在空间里的struct 这里要注意如何初始化
- 要使用的话直接 变量名.元素就行
- 结构体的使用 先声明 后定义
- struct mm{
- int a;
- int b;
- }//类型先声明
- struct mm MM={1,2};//定义
嵌套的使用
namespace A {
int a = 1;
namespace B {
int b = 2;
}
}
printf("%d", A::B::b); //打印 b
c++标准的输入和输出
cout << "你好n";
cout << 1;
cout << "n";
cout << "n" << "姓名" << "t" << "性别";
cout << endl;
输出
- c + out <<
- 即cout+左移 字符 后面跟任何你要输出的形式
- 形式一定要正确
cout << "打印字符串n"; //打印字符型
cout << 10086<<"n"; //打印整型
cout << 1.1111<<"n"; //打印实型
cout << 'a'; //打印字符
cout << endl; //endl==换行符
cout << "你好" << 007 << 't' << endl;
//多个类型一起输出
- 多个类型一起输出时 用<<连接
- endl =="n"作用相同
输入
- c+in >>
- 即cin+右移 字符
char i; //
cin >> i; //输入字符
cout << i << endl;
int x;
cin >> x; //输入整型
cout << x<> y;
cout << y << endl;
- 首先要声明 变量
- 然后使用就行
函数的使用
函数重载
函数重载 可以出现相同名字的函数
数目不同
void print(int a) {
printf("%dn",a);
}
void print(int a,int b) {
printf("%d %dn", a,b);
}
类型不同
void print(int a, int b) {
printf("%d %dn", a,b);
}
void print(char a, char b) {
printf("%c%cn", a,b);
}
顺序不同
void print(char a, int b) {
printf("%c%dn", a ,b);
}
void print(int a, char b) {
printf("%d%cn", a,b);
}
- 以上全是相同函数名的函数 但是形参的数量、类型、顺序不一样
- 顺序不同时,多个参数的类型要求要不一样才可以
函数缺省
void test(int a , int b =22, int c = 33, int d = 44) {
printf("%d %d %d %dn",a,b,c,d);
}
test(1); 其对应结果分别是 1,22,33,44
test(1, 2); 1, 2,33,44
test(1, 2, 3); 1, 2, 3,44
test(1, 2, 3, 4); 1, 2, 3, 4
- 怎么理解?
- 就是在函数传参时 给其赋值
- 假如参数的数量像上面的代码一样
- 1个参数 传参数a,其他的用原始参数
- 2个参数 传参数a,b,其他的用原始参数
- 3个参数 传参数a,b,c,剩下的用原始参数
- 4个参数 传参数a,b,c,d
- 打印出的结果完全不一样
using namespace 空间名; 加上这句代码 在该区域内使用空间元素就不需要 空间名::
using namespace 奇美拉;
奇美拉::print();
print();
上面两句代码就等同
奇美拉::print();==print();
- using namespace 空间名;
- 这句代码适用于某作用域
- 如果在函数中 只适用于该函数
- 如果在全局中 适用于全局
using namespace std; 一个特殊的命名空间 std 这一句代码在以后会经常看见
结构体的使用
namespace 奇美拉 {
char name[9] = { "1阿尼亚" };
struct mm {
int a;
int b;
};
int x;
void print() {
printf("1库吉n");
}
}
int main (){
struct 奇美拉::mm MM= {1,2}; 记住 struct mm 这两部分合在一起才是类型关键字
printf("%dn",MM.a);
printf("%sn", 奇美拉::name);
return 0;
}
- 在空间里的struct 这里要注意如何初始化
- 要使用的话直接 变量名.元素就行
- 结构体的使用 先声明 后定义
- struct mm{
- int a;
- int b;
- }//类型先声明
- struct mm MM={1,2};//定义
嵌套的使用
namespace A {
int a = 1;
namespace B {
int b = 2;
}
}
printf("%d", A::B::b); //打印 b
c++标准的输入和输出
cout << "你好n";
cout << 1;
cout << "n";
cout << "n" << "姓名" << "t" << "性别";
cout << endl;
输出
- c + out <<
- 即cout+左移 字符 后面跟任何你要输出的形式
- 形式一定要正确
cout << "打印字符串n"; //打印字符型
cout << 10086<<"n"; //打印整型
cout << 1.1111<<"n"; //打印实型
cout << 'a'; //打印字符
cout << endl; //endl==换行符
cout << "你好" << 007 << 't' << endl;
//多个类型一起输出
- 多个类型一起输出时 用<<连接
- endl =="n"作用相同
输入
- c+in >>
- 即cin+右移 字符
char i; //
cin >> i; //输入字符
cout << i << endl;
int x;
cin >> x; //输入整型
cout << x<> y;
cout << y << endl;
- 首先要声明 变量
- 然后使用就行
函数的使用
函数重载
函数重载 可以出现相同名字的函数
数目不同
void print(int a) {
printf("%dn",a);
}
void print(int a,int b) {
printf("%d %dn", a,b);
}
类型不同
void print(int a, int b) {
printf("%d %dn", a,b);
}
void print(char a, char b) {
printf("%c%cn", a,b);
}
顺序不同
void print(char a, int b) {
printf("%c%dn", a ,b);
}
void print(int a, char b) {
printf("%d%cn", a,b);
}
- 以上全是相同函数名的函数 但是形参的数量、类型、顺序不一样
- 顺序不同时,多个参数的类型要求要不一样才可以
函数缺省
void test(int a , int b =22, int c = 33, int d = 44) {
printf("%d %d %d %dn",a,b,c,d);
}
test(1); 其对应结果分别是 1,22,33,44
test(1, 2); 1, 2,33,44
test(1, 2, 3); 1, 2, 3,44
test(1, 2, 3, 4); 1, 2, 3, 4
- 怎么理解?
- 就是在函数传参时 给其赋值
- 假如参数的数量像上面的代码一样
- 1个参数 传参数a,其他的用原始参数
- 2个参数 传参数a,b,其他的用原始参数
- 3个参数 传参数a,b,c,剩下的用原始参数
- 4个参数 传参数a,b,c,d
- 打印出的结果完全不一样
namespace A {
int a = 1;
namespace B {
int b = 2;
}
}
printf("%d", A::B::b); //打印 b
c++标准的输入和输出
cout << "你好n";
cout << 1;
cout << "n";
cout << "n" << "姓名" << "t" << "性别";
cout << endl;
输出
- c + out <<
- 即cout+左移 字符 后面跟任何你要输出的形式
- 形式一定要正确
cout << "打印字符串n"; //打印字符型
cout << 10086<<"n"; //打印整型
cout << 1.1111<<"n"; //打印实型
cout << 'a'; //打印字符
cout << endl; //endl==换行符
cout << "你好" << 007 << 't' << endl;
//多个类型一起输出
- 多个类型一起输出时 用<<连接
- endl =="n"作用相同
输入
- c+in >>
- 即cin+右移 字符
char i; //
cin >> i; //输入字符
cout << i << endl;
int x;
cin >> x; //输入整型
cout << x<> y;
cout << y << endl;
- 首先要声明 变量
- 然后使用就行
函数的使用
函数重载
函数重载 可以出现相同名字的函数
数目不同
void print(int a) {
printf("%dn",a);
}
void print(int a,int b) {
printf("%d %dn", a,b);
}
类型不同
void print(int a, int b) {
printf("%d %dn", a,b);
}
void print(char a, char b) {
printf("%c%cn", a,b);
}
顺序不同
void print(char a, int b) {
printf("%c%dn", a ,b);
}
void print(int a, char b) {
printf("%d%cn", a,b);
}
- 以上全是相同函数名的函数 但是形参的数量、类型、顺序不一样
- 顺序不同时,多个参数的类型要求要不一样才可以
函数缺省
void test(int a , int b =22, int c = 33, int d = 44) {
printf("%d %d %d %dn",a,b,c,d);
}
test(1); 其对应结果分别是 1,22,33,44
test(1, 2); 1, 2,33,44
test(1, 2, 3); 1, 2, 3,44
test(1, 2, 3, 4); 1, 2, 3, 4
- 怎么理解?
- 就是在函数传参时 给其赋值
- 假如参数的数量像上面的代码一样
- 1个参数 传参数a,其他的用原始参数
- 2个参数 传参数a,b,其他的用原始参数
- 3个参数 传参数a,b,c,剩下的用原始参数
- 4个参数 传参数a,b,c,d
- 打印出的结果完全不一样
- c + out <<
- 即cout+左移 字符 后面跟任何你要输出的形式
- 形式一定要正确
cout << "打印字符串n"; //打印字符型 cout << 10086<<"n"; //打印整型 cout << 1.1111<<"n"; //打印实型 cout << 'a'; //打印字符 cout << endl; //endl==换行符 cout << "你好" << 007 << 't' << endl; //多个类型一起输出
- 多个类型一起输出时 用<<连接
- endl =="n"作用相同
输入
- c+in >>
- 即cin+右移 字符
char i; //
cin >> i; //输入字符
cout << i << endl;
int x;
cin >> x; //输入整型
cout << x<> y;
cout << y << endl;
- 首先要声明 变量
- 然后使用就行
函数的使用
函数重载
函数重载 可以出现相同名字的函数
数目不同
void print(int a) {
printf("%dn",a);
}
void print(int a,int b) {
printf("%d %dn", a,b);
}
类型不同
void print(int a, int b) {
printf("%d %dn", a,b);
}
void print(char a, char b) {
printf("%c%cn", a,b);
}
顺序不同
void print(char a, int b) {
printf("%c%dn", a ,b);
}
void print(int a, char b) {
printf("%d%cn", a,b);
}
- 以上全是相同函数名的函数 但是形参的数量、类型、顺序不一样
- 顺序不同时,多个参数的类型要求要不一样才可以
函数缺省
void test(int a , int b =22, int c = 33, int d = 44) {
printf("%d %d %d %dn",a,b,c,d);
}
test(1); 其对应结果分别是 1,22,33,44
test(1, 2); 1, 2,33,44
test(1, 2, 3); 1, 2, 3,44
test(1, 2, 3, 4); 1, 2, 3, 4
- 怎么理解?
- 就是在函数传参时 给其赋值
- 假如参数的数量像上面的代码一样
- 1个参数 传参数a,其他的用原始参数
- 2个参数 传参数a,b,其他的用原始参数
- 3个参数 传参数a,b,c,剩下的用原始参数
- 4个参数 传参数a,b,c,d
- 打印出的结果完全不一样
函数重载
函数重载 可以出现相同名字的函数
数目不同
void print(int a) {
printf("%dn",a);
}
void print(int a,int b) {
printf("%d %dn", a,b);
}
类型不同
void print(int a, int b) {
printf("%d %dn", a,b);
}
void print(char a, char b) {
printf("%c%cn", a,b);
}
顺序不同
void print(char a, int b) {
printf("%c%dn", a ,b);
}
void print(int a, char b) {
printf("%d%cn", a,b);
}
- 以上全是相同函数名的函数 但是形参的数量、类型、顺序不一样
- 顺序不同时,多个参数的类型要求要不一样才可以
函数缺省
void test(int a , int b =22, int c = 33, int d = 44) {
printf("%d %d %d %dn",a,b,c,d);
}
test(1); 其对应结果分别是 1,22,33,44
test(1, 2); 1, 2,33,44
test(1, 2, 3); 1, 2, 3,44
test(1, 2, 3, 4); 1, 2, 3, 4
- 怎么理解?
- 就是在函数传参时 给其赋值
- 假如参数的数量像上面的代码一样
- 1个参数 传参数a,其他的用原始参数
- 2个参数 传参数a,b,其他的用原始参数
- 3个参数 传参数a,b,c,剩下的用原始参数
- 4个参数 传参数a,b,c,d
- 打印出的结果完全不一样
void test(int a , int b =22, int c = 33, int d = 44) {
printf("%d %d %d %dn",a,b,c,d);
}
test(1); 其对应结果分别是 1,22,33,44
test(1, 2); 1, 2,33,44
test(1, 2, 3); 1, 2, 3,44
test(1, 2, 3, 4); 1, 2, 3, 4
- 怎么理解?
- 就是在函数传参时 给其赋值
- 假如参数的数量像上面的代码一样
- 1个参数 传参数a,其他的用原始参数
- 2个参数 传参数a,b,其他的用原始参数
- 3个参数 传参数a,b,c,剩下的用原始参数
- 4个参数 传参数a,b,c,d
- 打印出的结果完全不一样



