初阶c++入门

1.命名空间 namespace
  • 变量的查找范围(默认的情况下)

    • 当前的局部变量
    • 全局变量
    • 不会去命名空间去找(以一定的格式 命名::变量或者函数,就是直接去命名空间里去查找)
  • 命名空间可以嵌套,来解决命名空间命名重复的情况

使用命名空间
  • (直接指定命名空间)使用命名空间定义的结构体:
namespace bit
{
    int a=0;
    
    struct Node
    {
        int val;
        struct Node*next;
    }
    
    int sum(int x,int y)
    {
        return x+y;
    }
}
//堆命名空间中的变量的使用
int b=bit::a;
//对命名空间的函数的使用
int sum=bit::sum(1,2);
//对命名空间结构体的使用
struct bit::Node newnode;
  • 多个文件可以定义同一个命名空间,它们是会合并的。同一个命名空间里的名称不能相同。
  • 展开命名空间
using namespace bit;

//改变了查找规则,默认的查找次序的 局部变量,全局变量,展开命名空间之后,默认的查找次序会加上命名空间。
//当只有一个命名空间展开时,命名冲突发生的可能性很小
//当有多个命名空间展开时,很容易发生命名冲突

//例子:
namespace bit
{
    struct Node
    {
        int val;
        struct Node*next;
    }
}

namespace bid
{
    struct Node
    {
        int val;
        struct Node*next;
    }
}

using namespace bit;
using namespace bid;
//上面的展开就出现命名冲突

  • 指定展开某一个
namespace bit
{
    int a=0;
    struct Node
    {
        int val;
        struct Node*next;
    }
}
using bit::a;
  • 区域的划分
    • 局部域
    • 全局域
    • 命名空间域

不同的域 可以定义同名的变量/函数/结构体类型

不同的是,局部域和全局域同时也代表了变量的生命周期,但是命名空间域中的变量依然是全局变量,命名空间域中的变量的生命周期和全局变量是一样的。

2.输入输出

c++的官方头文件是放在一个命名空间里的,命名空间的名称为std

  • 流输出
  • 流提取
//包含头文件
#incldue<iostream>
using std::cout;
using std::endl;
int main()
{
    int a=1;
    float b=1.2;
    
    //流的输出
    //可以自动的识别类型
    cout<<a<<' '<<b'\n'<<endl;
    /*这个里的endl也有换行的作用*/
    
    //流的输入
    //将i对象的数值,放在j对象中
    std:;cin>>i>>J;
    return 0;
}
3.缺省参数

在没有给函数传参数的时候,默认是该位置的缺省值

void fac(int a=1,int b=2,int c=3)
{
    //操作···
}

//函数的调用
fac();
fac(2);
fac(2,3);

//这个样的写法是错误的
fac(2, ,3);
  • 全缺省
void fac(int a=1,int b=2,int c=3)
  • 半缺省
void fac(int a,int b=2,int c=3)
//只能从右向左缺省

注:缺省参数规定是在函数的申明给

4.函数的重载

函数的重载:就是函数的一种特殊的情况,c++允许在同一个作用域中申明一个功能类似的同名函数,但这些函数的形参列表(参数类型,参数的数量,参数的顺序)不同,常用与功能类似的的同名函数,依据形参列表来确定应该调用哪个函数。

运行时会自动匹配参数,上述的三个有一个不同就可以。

注:

  • 返回值不同不能辨别函数的重载
  • 当传入的函数参数需要类型转换的时候,重载函数就很容易出错,不知道以哪个函数的参数作为标准进行转化,对于非重载函数就没有这个问题

C语言和C++在链接的不同

  • C语言链接查找函数的定义是用的是函数名寻找
  • C++链接查找的函数名的修饰是通过函数名和函数的参数来修饰的(不同的编译器命名规则不同),所以C++可以使用重载函数
5.引用

引用就是取别名,一个变量可以取多个别名

int a=0;
int&b=a;
//可以给别名取别名,本质上还是作用于a
int&c=b;
//注:都是同一个地址,同一块空间,就是名字不同
  • 引用的作用和指针类似

  • 引用和指针的不同,引用在初始化之后,是不能改变指向的

注:引用必须要初始化

//不可以取别名的情况
const int m=0;
int& n=m;
//这个是不行的
//理由:权限的方法
//m是只读的,而n则是可读可写的

//下面是可以的,这个是权限的平移
const int& n=m;

//权限是可以缩小的,下面这个也是可以的
int m=0;
const int&n=m;

权限:作用于变量本身(引用和指针都有,值和值之间没有)

  • 权限不可以放大,可以平移
  • 权限是可以缩小的

总结

	这就是一些c++初阶的一些知识,希望能对你有所帮助,文中的举例并不详尽希望大家能在评论区或私信指教。
  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值