C++入门学习笔记

1、命名空间

        我个人的理解,当有几个cpp文件同时在编写时,可能会遇到共同定义使用同一个名字的情况,在平级调用时,可能就会报错。但是如果这样的话,语法不支持一个名字被定义两次。因此,C++使用命名空间来解决这个问题。

        在一个C++文件中,我们所写的一个函数,他有一个作用域,和生命周期,作用域内的变量出了作用域就会销毁。因此,每一个函数等中的变量相同,是可以的,因为它出了函数就销毁了。而命名空间是一个域,它没有生命周期。冒号:就是命名空间解释符号,意思是往前寻找那个空间里的相应定义。

        如此我们就可以解释开头写的那句:using namespace std;这句代码的含义了。

它是指在  std是标准库中的命名空间的名字,那些标准库中的定义就放在这个空间中。

但是呢在实际应用中,我们还是最好只是部分展开就好。比如:

using std::cout;
using std::cin;

2、输入和输出

        C++是兼容c的,因此我们可以使用C语言的输入和输出的,但是使用C++的输入和输出也是很方便的。 

输出:cout<<内容<<endl;  输入:cin>>内容;

cout能够识别输出内容的类别,不需要我们设定类型。

3、缺省参数

        在我们传递参数时,在函数那里对应的形参可以设置初始值,这样方面我们有时忘记传值,但是也不会犯错。但是也要注意几个点,一、形参的值不能跳跃设置,必须从右往左。二、缺省参数不能在函数声明和定义时同时出现。三、缺省参数只能是常量或者全局变量。

int Add(int x = 5,int y = 6)//全缺省
{
    return x+y;
}
int Add(int x,int y = 6)//半缺省
{
    return x+y;
}

4、函数重载

        我们在写函数时,可能一个函数的实现一样,但是返回值不一样,也可能实现一样但是,参数的类型不一样,因此会构成重载函数。重载函数是使用同一个名字,但是形参列表(参数个数 或 类型 或 类型顺序)不一样。

int Add(int x,int y){}
int Add(int x){}

int Add(int x,double y){}

double Add(double x,int y){}

实际上,编译器将每一个重载函数都使用一定的方法来标记,以便于调用时正确使用。

5、引用

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。

类型&+引用变量名 =引用实体

引用的特性:

1.引用在使用时,必须初始化

2.当引用了一个实体后,不能再引用另一个实体

3.一个变量可以多个引用

引用可以做参数,可以做返回值。

int Swap(int& x,int& y){
    int temp = x;
    x = y;
    y = temp;
}

6、内联函数

以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。

内联函数是C++对宏的改进。

注意:内联函数不建议定义和生命分开,否则可能会发生链接错误。

7、auto关键字

我的理解是auto可以自动识别类型,从而省去我们很多的时间。特别是在一些类型的名称特别长的情况下,尤其好用。

int a = 10;
auto b = a;
int* x = &a;
aotu* y = &a;

auto的使用,需要初始化。同时,它也是占位符,在编译阶段,会赋予实际的类型。

在引用时,auto后必须加&符号,同时在auto同一行的类型需要一样。它也不能用作参数,和数组

8、范围for的使用

int arr[] = {1,2,3,4,5};

for(aotu x:arr)
{
    cout<<x<<' ';
}

冒号前面是迭代的变量,后是迭代的范围。

注意:数组的范围是确定的才可用

9、指针空值nullptr

void f(int)
{
 cout<<"f(int)"<<endl;
}
void f(int*)
{
 cout<<"f(int*)"<<endl;
}
int main()
{
 f(0);
 f(NULL);
 f(nullptr);
 return 0;
}

这段代码中,f(0)和f(NULL)的调用的函数是一样的。所以使用nullptr来解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Though even

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值