ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

C++入门(浅谈类和对象)

2026/8/2 18:11:21 拓冰建站 浏览量
C++入门(浅谈类和对象)

1 命名空间

1-1命名空间的定义

定义命名空间的目的是为了不与标识符的名称进行冲突,命名空间中可以定义函数,变量,类型。

比如:这里的rand和strlens其实是函数,在命名空间中可以避免与全局作用域中的rand函数和strlens函数冲突,其次命名空间还可以嵌套定义

同时一个命名空间定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{int rand = 10;int strlens = 20;int Add(int a, int b){return a + b;}class bit{int Sub(int a = 4, int b = 5){return b - a;};double _money;float  _lucky;int _life;namespace character{char* next;int people;}
}

1-2命名空间的使用

方法1:加命名空间名称+作用域限定符

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{int rand = 10;int strlens = 20;int Add(int a, int b){return a + b;}class bit{int Sub(int a = 4, int b = 5){return b - a;};double _money;float  _lucky;int _life;}*p;namespace character{char* next;int people=10;}
}
int main()
{cout << bit::character::people<< endl;return 0;
}

方法2:使用using将命名空间某个成员引入

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{int rand = 10;int strlens = 20;int Add(int a, int b){return a + b;}class bit{int Sub(int a = 4, int b = 5){return b - a;};double _money;float  _lucky;int _life;}*p;namespace character{char* next;int people=10;}
}
using bit::Add;
int main()
{cout << Add(4,5)<< endl;return 0;
}

方法3:用using namespace将某个命名空间引入

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{int rand = 10;int strlens = 20;int Add(int a, int b){return a + b;}class bit{int Sub(int a = 4, int b = 5){return b - a;};double _money;float  _lucky;int _life;}*p;namespace character{char* next;int people=10;}
}
using namespace bit;
using namespace character;
int main()
{cout <<people << endl;return 0;
}

2 C++输入和输出

C++的输入输出会自动识别类型,非常方便不像C那样需要printf指定类型输出,其次C++也是需要包含头文件的,输入流cout,输出流cin所需的头文件就是#include<iostream>,<<是流插入运算符,>>是流提取运算符,std是C++标准库的命名空间名,C++将标准库的定义和实现都放在这个命名空间里

3 缺省参数

调用的函数可以存在没有参数,或者参数缺省,下面来给大家示例

void fun(int a = 10)
{cout << a << endl;
}
int main()
{fun(2);fun();return 0;
}

存在多个参数时,不能隔着缺省,只能从右向左连续缺省

int fun(int a = 10,int b=6,int c = 8)
{return a + b + c;
}
int main()
{cout << fun(2, 4) << endl;cout << fun(4, 4, 4) << endl;cout << fun(5) << endl;fun(5);return 0;
}

4 函数重载

也就是说我可以用相同的函数名,但是参数类型不一样,编译器会自动识别函数参数类型进行相应的匹配

int fun(int a = 10,int b=6,int c = 8)
{return a + b + c;
}
void fun(char* p, char a, int b)
{cout << p << endl;cout << a << endl;cout << b << endl;
}
int main()
{char arr[15] = "I love China!";cout << fun(2, 4) << endl;fun(arr, 65, 4);return 0;
}

5 引用

引用也相当于取别名,比如你的名字一样有小名,有大名。

引用的变量其实就是这个变量本身,在语法上其实引用是别名和本名公用同一块空间的,

但是底层逻辑就不是了,底层逻辑就是指针。

int main()
{int a = 10;int& b = a;b = 100;cout << a << endl;return 0;
}

6 内联函数

内联函数其实是一种空间换时间的方式,内联函数会在调用它的地方展开,不会开辟函数栈帧,提高了程序的运行效率,但是如果你的内联函数的空间很大很大,那么编译器会自动把它的内联取消定义。

关键字修饰:inline

可以看到下面的汇编代码中根本没有为fun函数开辟栈帧只是调用而已