C++入门(一)

目录

一.   关键字

二.   命名空间

三.   输入&输出

1.输出

2.输入

四.   缺省参数

1.全缺省参数

 2.半缺省参数

五.   函数重载

1.类型

 2.原理


一.   关键字

简单了解一下都有哪些关键字



二.   命名空间

在c语言的学习之中,我们知道,在同一个作用域中,我们无法使用相同的名字进行命名。也无法使用库中的名字进行命名。

而在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存
在于全局作用域中,很有可能会导致冲突。而我们可以使用命名空间来解决这个问题,使用命名空间的目的是对标识符的名称进行本地化,

以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

namespace szt
{

}

例如,我们可以定义一个名为szt的命名空间

而命名空间中可以定义变量/函数/类型

namespace szt
{
    int rand=10;//变量

    int add(int a,int b)//函数
    {
        return a+b;
    }

    struct sList//类型
    {
        int cal;
        struct sList* next;
    }
}

同时,命名空间可以嵌套使用

namespace szt1
{
    int rand=10;

    namespace szt2
    {

    }
}

而在同一个工程之下,同名的命名空间会被合并。例如头文件和源文件中的同名命名空间。

而若是想要使用命名空间的成员,有3种方法

1.前面加命名空间名称以及作用域限定符

namespace szt
{
    int a=10;//变量

    int add(int a,int b)//函数
    {
        return a+b;
    }

    struct sList//类型
    {
        int cal;
        struct sList* next;
    };
}

int main()
{
    struct szt::sList SL;
    printf("%d\n",szt::a);
}

2.使用using引入某个成员

using szt::a;

int main()
{
    printf("%d\n",a);
}

3.使用using namespace 命名空间名称 引入

using namespace szt;

int main()
{
    printf("%d",a);
}

而第一种方法能够做到最好的隔离,但使用较为麻烦

第二种方法也能做到较好的隔离,在使用一些常用的成员时较为方便

第三种方法最方便,但会导致隔离失效,引发一些问题

例如在我们常见的一些代码中,在引用输入输出流的头文件后

#include<iostream>

往往会使用第三种方法来展开一个std命名空间(C++库的实现定义)

using namespace std;

这种方法,在我们自己练习时会很方便,但若是在公司中进行大的项目的实现时,不要这样使用。



三.   输入&输出

1.输出

我们可以先实现一下我们的老朋友Hello world

#include<iostream>
using namespace std;
int main()
{
    cout<<"Hello world!!!"<<endl;
    return 0;
}

 

在其中,iostream 和std 我们在上面已经提到过,这里补充一点,早期我们直接引用头文件即可

#include<iostream.h>

而后来,为了与c语言进行区别,我们便如上述代码样式进行头文件的引用。

cout用于输出,<<为流插入运算符,endl表示换行输出

因此,我们也可以这样

cout<<"Hello world!!!\n";

而当输出存在参数时,cout能做到自动识别变量类型,并识别浮点数的小数位

#include<iostream>
using namespace std;
int main()
{
    float a=1.23;  
    char b='b';
    cout<<a<<"  "<<b<<endl;
    return 0;
}


2.输入

在C++中,我们使用cin进行输入,同样,cin也能自动识别变量类型

int main()
{
    int a;
    double b;
    char c;    
    cin>>a;
    cin>>b>>c;
    return 0;
}

而>>是流提取运算符



四.   缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

而缺省参数分为全缺省参数,半缺省参数

1.全缺省参数

字面意思,便是所有参数都有缺省值

void print(int a = 10, int b = 20, int c = 30)
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
    cout<<end1;
}

int main()
{
    print();
    print(1);
    print(1,2);
    print(1,2,3);
    return 0;
}

而在存在部分的参数时,严格遵循从左向右的原则

无法做到c存在参数而a,b没有参数的类似的情况

print(1, ,3);//error

 2.半缺省参数

其实就是部分缺省

而在半缺省参数中,我们必须严格遵循从右往左依次给出

void print(int a, int b, int c = 30)//right
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
    cout<<end1;
}

void print(int a = 10, int b, int c = 30)//error
{
    cout<<"a = "<<a<<endl;
    cout<<"b = "<<b<<endl;
    cout<<"c = "<<c<<endl;
    cout<<end1;
}

注意:缺省值必须是常量或者全局变量 

缺省参数不能在函数声明和定义中同时出现,而别人在查看代码功能时,往往会去首先查看头文件来了解各个函数的功能,所以我们一般将缺省参数放在函数的声明之中,也就是头文件中。



五.   函数重载

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题。

1.类型

参数类型不同

int Add(int left, int right)
{
    cout << "int Add(int left, int right)" << endl;
    return left + right;
}

double Add(double left, double right)
{
    cout << "double Add(double left, double right)" << endl;
    return left + right;
}

int main()
{
    cout<<Add(1, 2)<<endl;
    cout << Add(1.1,2.2) << endl;
    return 0;
}

参数个数不同

int Add(int num1, int num2, int num3)
{
    cout << "int Add(int num1, int num2, int num3)" << endl;
    return num1+num2+num3;
}

int Add(int num1, int num2)
{
    cout << "int Add(int num1, int num2)" << endl;
    return num1+num2;
}

int main()
{
    cout<<Add(1, 2)<<endl;
    cout << Add(1,2,3) << endl;
    return 0;
}

 

参数类型顺序不同

void f(int a, char b)
{
    cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
    cout << "f(char b, int a)" << endl;
}

int main()
{
    f(1, 'a');
    f('a', 1);
    return 0;
}

而单纯的返回值不同无法作为函数重载的条件。

 2.原理

不会,之后再补充

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

finish_speech

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

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

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

打赏作者

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

抵扣说明:

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

余额充值