c++在c基础上多出来的特性

c++新特性包括:内嵌函数,按引用传递变量,默认的参数值,函数重载(多态)以及模板函数。
1. 内嵌函数。(主要用于区别常规函数,组合方式的不同)
常规函数的调用,使程序跳到另一个地址(函数的地址),并在函数结束时返回。典型实现:执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后跳回到地址被保存的指令处。来回跳跃并记录跳跃位置意味着使用之前的函数需要一定的开销。
内嵌函数就是关掉这一调用,执行速度比常规函数稍快,但代价就是需要占用更多内存。如果程序在10个不同的地方调用同一个内嵌函数,则该程序将包含该函数代码的10个副本。
使用该特性,必须采取的下述措施之一:
在函数声明前加上关键字inline;
在函数定义前加上关键字inline;
内嵌函数不应过大,而且它也无法递归使用。

2.新的复合类型——引用变量。引用就是已定义的变量的别名。有点类似typedf,主要用途是用作函数的形参。通过将引用变量用作参数,函数将使用原始数据,而不是其副本。引用也为函数处理大型结构提供了一种非常方便的途径。
使用:
int rats;
int &rodents = rats;
其中,&不是地址运算符,而是类型标识符的一部分。int &指的是指向int的引用。上述引用声明允许rats和rodents互换,它们指向相同的值和内存单元。
(可自己代码验证)
附:必须在声明引用变量时进行初始化
上述是左值引用,c++11还有右值引用。这种引用可以指向右值,是使用&&声明的:
double && rref = std::sqrt(36.00);
double j = 15.0;
double && jref = 2.0*j + 18.5;
std::cout << rref << ‘\n’; //display 6.0
std::cout << jref << ‘\n’ //display 48.5
目的在于:让库设计人员能够提供有些操作的更有效实现

  1. 默认参数(当函数调用中省略了实参时,自动使用的一个值)
    例:int harpo(int n, int m = 4, int j = 5);
    当发生下列调用时:
    beeps = harpo(2); //same as harpo(2, 4, 5)
    beeps = harpo(1,8); //same as harpo()1,8,5)
    beeps = harpo(8,7,6); //no default arguments used
    明显,至少一个要一个实参,其他参数,函数能填充进去。

4.多态(面向对象的3大特性之一。封装,多态,继承)
简单来说,就是同一个函数,使用不同的参数,行使的功能不同。
例:void setBuff(const char *str, int width)
void setBuff(double d, int width, int n)
void setBuff(int i, int width)
当输入不同参数
setBuff( “caiji”, 2)
setBuff(2.1, 2, 2)
setBuff(2, 2)
这些函数的功能是不一样的。

  1. 函数模板
    使用泛型来定义函数,通过将类型作为参数传递给模板,可使编译器生成该类型的函数
    例:

    include

    template //or typename
    void Swap(T &a, T &b)
    {
    int temp;
    temp = a;
    a = b;
    b = temp;
    }

    int main()
    {
    using namespace std;
    int i = 10;
    int j = 20;
    cout << “i, j = ” << i << “, ” << j << “.\n”;
    ……
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值