C++中定义在类内的成员函数调用外部函数还是inline的吗?

2025-04-07 16:46:13
推荐回答(4个)
回答1:

  

  定义在类内部的成员函数都是自动inline的,那麽如果成员函数裏调用了外部的函数,会怎样呢?会将这个外部函数也内联展开,还是执行压栈保护现场这些操作来调用这个外部函数呢?说一个函数是 inline 的,是说它会被展开在(其他函数裏)调用它的地方,而不是展开这个函数内对其他函数的调用。

 

  C++

  C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。最新正式标准C++于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性。

  语言特点

  优点

  • C++代码· C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
    C++设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
    C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
    C++设计成尽可能与C兼容,借此提供一个从C到C++的平滑过渡。
    C++避免平台限定或没有普遍用途的特性。
    C++不使用会带来额外开销的特性。
    C++设计成无需复杂的程序设计环境。
    出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。
    C++在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C++的集成开发环境中完成的。C++相对众多的面向对象的语言,具有相当高的性能。

    C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。

  缺点

  一般情况下,C++效率和C语言的效率相差在±5%之间。因此在一般场合,C++可以替代C。

  C++由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。

  由于本身的复杂性,复杂的C++程序的正确性相当难于保证。也有人提出不支持多线程的原语等缺陷。不过有如此多的知名人士提出了如此多的缺陷,正说明C++被广泛使用和成功。

  C++由于过度的复杂性,以及与unix的文化相抵触,在unix/linux领域受到很多著名人士(比如Linux之父linus torvalds与著名黑客Eric S. Raymond)的强烈批评与抵制。

回答2:

好像inline现在确实很少用了,编译器都越来越智能了

tenglvjun说的对,编译器是否把函数编成内联,它有自己的判断,并不会因为你写了inline就一定是内联.就和register一样,并不是加了register,编译器就一定会把变量放到寄存器中

回答3:

说一个函数是inline的,是说它会被展开在(其他函数里)调用它的地方,而不是展开这个函数内对其他函数的调用。

回答4:

当然了,不用inline关键字,你怎么把一个函数声明为内联?