2021-03-25

初出茅庐——C++

C++解决了C语言中设计不好或者使用不是很方便的问题。
一、命名空间
在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都存在于全局作用域中,这样会导致很多冲突。使用命名空间的目的是对标识符进行本地化,以避免命名冲突。
定义命名空间需要使用到namespace关键字,后面跟命名空间的名字,再加一对{},{}中为命名空间的成员。
相关代码:

1.
#include <iostream>
using namespace std;
void main()
{
    cout<<"Hello Word"<<endl;
}
2.
#include <iostream>
void main()
{
    std::<<"Hello Word"<<std::endl;
}

:: 代表作用域访问符。

注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。
命名空间的访问方式:
1.在成员前加 N:: (N为命名空间的名字,::为作用域限定符——默认访问全局的)
2.使用using来指定访问变量:using N2::N3::a
3.使用using来指定访问命名空间:using namespace N2
相关代码:

1.
#include <iostream>
using namespace std;
#define AAA
#ifdef AAA
int fun(int a,int b)
{
    cout<<"AAAAAAAAA"<<endl;
    return 0;
}
#else
int fun(int a,int b)
{
    cout<<"BBBBBBBBB"<<endl;
    return 0;
}
#endif
void main()
{
    fun(1,2);
}

2.
#include <iostream>
using namespace std:
namespace Myspace
{
    int fun(int a,int b)
    {
        cout<<"AAAAAAAAA"<<endl;
        return 0;
    }
    void fun1()
    {
        cout<<"This is Myspace::fun1()"<<endl;
    }
};
namespace Youspace
{
        int fun(int a,int b)
    {
        cout<<"BBBBBBBBB"<<endl;
        return 0;
    }
    void fun1()
    {
        cout<<"This is Youspace::fun1()"<<endl;
    }
};
//第一种调用方法
void main()
{
    Myspace::fun(1,2);
}
//第二种调用方法
using namespace Myspace;
void main()
{
    fun(1,2);
}
//第三种调用方法
using Youspace::fun;
void main()
{
    fun(1,2);
}       

二、标准输入/输出
使用标准输入cin和标准输出cout时,必须包括头文件以及std标准命名空间,C++头文件不需要包含.h。
三、函数重载
C语言不支持函数重载,但C++支持函数的重载
函数重载:C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的参数列表(参数个数或类型或顺序)必须不同,不能仅仅依靠返回值不同来区分函数的重载。
相关代码:

#include <iostream>
using namespace std;
fun()
{
    cout<<"This is fun()."<<endl;
}
fun(int a,int b)
{
    cout<<"This is fun(int)"<<endl;
}
void main()
{
    fun();
    fun(1,2);
}

C语言没有办法支持函数的重载,因为同名函数没有办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。
C++工程中,在函数前加extern “c”,意思是告诉编译器,将该函数按照C语言规则来实现。
相关代码:

#include <iostream>
using namespace std:
extern "c" int fun(int a,int b)
{
    return a+b;
}
double fun(double a,double b)
{
    return a+b;
}
void main()
{
    fun(1,2);
    fun(1.1,2.2);
}

四、“备胎”——》缺省参数
缺省参数是声明或定义函数时,为函数的参数指定一个默认值,在调用该函数时,如果没有指定实参,就采用该默认值,否则使用指定的实参。
全缺省参数:所有参数都有默认值。
对于全缺省参数,如果调用函数时只传递了一部分实参,则实参从左往右传递,其余采用默认值
半缺省参数:部分参数带有缺省值,必须从右向左依次给出。
对于半缺省参数,要注意对没有给出缺省值的参数传递实参,实参同样从左往右传递全缺省参数:所有参数都有默认值。
对于全缺省参数,如果调用函数时只传递了一部分实参,则实参从左往右传递,其余采用默认值
半缺省参数:部分参数带有缺省值,必须从右向左依次给出。
对于半缺省参数,要注意对没有给出缺省值的参数传递实参,实参同样从左往右传递。
注意:
1.缺省值必须是常量或者全局变量。
2.缺省参数不能在函数声明和定义中同时出现。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值