`
ah_fu
  • 浏览: 227934 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

C++学习:inline的函数或者成员函数一定要定义在头文件中

阅读更多
    看C++的教材的时候,一直记得书上说inline只是一个提示,编译器可能会拒绝将函数定义成内联的。今天犯了思维定式的错误:函数或成员函数加上inline的时候,其实现部分一定要写在头文件中,否则链接的时候将发生找不到引用的错误(GCC编译器在编译的时候还会给出警告)。
       请看下面重犯这个错误的代码:
// MyClass.h
#ifndef _MY_CLASS_H_
#define _MY_CLASS_H_

#include 
<stdio.h>

class MyClass
...{
public:
   
inline void Print();
}
;

inline 
void Test();

#endif

// MyClass.cpp
#include "MyClass.h"


void MyClass::Print()
...{
    printf(
"Print ");
}


void Test()
...{
    printf(
"Test ");
}


// main.cpp
#include "MyClass.h"

int main()
...{
    MyClass o;
    o.Print();
    Test();
    
return 1;
}


    以上例子中:将inline去掉,或者将实现移动到头文件中,链接即可通过。

 
分享到:
评论

相关推荐

    内联函数体要放在头文件

    如果非内联函数在多个源文件中被定义,将会导致链接错误。但对于内联函数,由于其目的是在编译阶段进行替换,因此在多个编译单元中重复声明同一内联函数体不会引起链接错误,因为实际上并没有创建多个函数实例,而是...

    C++的头文件和实现文件分别写什么

    因此在下边,我把带有 inline 限定符的函数成员和写在类定义体内的函数成员统称为“要inline 的函数成员”。 非模板类型全局类型就像前面笼统的话讲的:申明写在.h 文件。对于函数来讲,没有实现体的函数,就相当...

    C++头文件使用

    成员函数的具体实现可以放在实现文件中,也可以放在类定义中通过`inline`关键字来声明并定义,以减少函数调用的开销。 4. **静态成员变量初始化**: 类中的静态成员变量初始化需要放在实现文件中,因为它们是所有类...

    有关c++的头文件说明

    在C++中,类通常在头文件中声明,而成员函数的实现放在源文件中。这样有助于模块化和编译效率。头文件中仅包含接口,源文件中包含实现细节。 8. **inline函数** 对于小的、经常被调用的函数,可以使用`inline`...

    C语言中的内联函数(inline)与宏定义(#define)详细解析

    尽管内联函数在很多情况下是优于宏定义的,但过度使用也可能导致代码膨胀,因为每个调用点都会插入函数体。因此,应当谨慎地使用内联函数,特别是在大型项目中。 总结来说,内联函数提供了一种安全、可调试且性能...

    编写自己的C语言头文件

    头文件中可以定义类、值在编译时就已知道的const对象和inline函数。这些实体可以在多个源文件中定义,只要每个源文件中的定义是相同的。例如,类的定义需要在头文件中,以便编译器可以生成正确的代码。 四、const...

    函数的定义和调用 C++系统函数

    这些函数在`&lt;iostream&gt;`、`&lt;cmath&gt;`等头文件中定义,可以直接在程序中使用。 通过深入理解这些函数相关的概念,程序员可以编写更模块化、可维护且高效的代码。函数的使用不仅简化了程序结构,还提高了代码的复用性...

    c++学习笔记(个人学习时做的笔记)

    在学习C++的过程中,结合实际项目和练习是加深理解的关键。同时,了解并掌握C++11和后续版本的新特性,可以使代码更现代、高效。此外,对于内存管理和对象生命周期的理解也是成为一名合格的C++程序员所必需的。在...

    c++中的内联函数inline用法实例

    如果在类中未给出成员函数定义,而想内联该函数,那么在类外部必须加上inline关键字,否则将认为不是内联的。 例如: ```cpp class A{ public: void Foo(int x, int y) { } // 自动地成为内联函数 }; ``` 正确...

    52_虚函数可以声明为inline吗1

    2. 内联函数的定义需要与声明一起放在头文件中,以便编译器在编译时能够找到并进行内联替换。 3. 内联函数可能会增加编译后可执行文件的大小,因为它在多个地方被复制。 虚函数则是实现动态多态性的一种方式。当一...

    C++自学教程从零开始(七)-何谓函数共20页.pdf

    函数在C++中的主要作用是提高代码的可读性和复用性,它将一组相关的操作封装在一起,形成一个独立的实体。通过调用函数,你可以避免在程序的不同地方重复编写相同的代码,从而降低了错误的可能性。在本教程的20页...

    Google+C+++编程规范.pdf

    在 C++ 编程中,头文件(header file)是编译器在编译过程中需要的文件之一。Google 的 C++ 编程规范对头文件的命名和组织提出了明确的要求。 * 命名规则:头文件的命名规则是使用大写字母开头,后面跟随下划线和...

    C++ 基本函数 讲义

    一个函数可以在多个文件中被声明,但为了避免重复定义错误,最好将函数声明(以及`inline`函数的定义)放入头文件中,然后在需要使用该函数的源文件中包含对应的头文件。函数声明仅仅描述了函数的接口,即它接收什么...

    高效C++:从C到C++

    然而,在C++中,我们有更好的替代方案——`const`关键字和`inline`函数。 - **原因**:`#define`在预处理阶段被替换,因此不会被编译器检查。这意味着如果在宏定义中出现错误(如拼写错误),可能直到运行时才会发现...

    c++学习笔记.pdf

    标题中的"C++学习笔记.pdf"表明文档是一份关于C++语言的学习记录。C++是一种广泛使用的编程语言,由Bjarne Stroustrup在1980年代初开发,它是一种静态类型、编译式、通用编程语言。C++支持多范式编程,包括过程化、...

    C++随机点名生成器实例代码(老师们的福音!)

    C++中inline函数可以用来提高代码的执行效率,例如在本文中的inline void copyright()、inline void input()、inline void work()等函数。 知识点7:C++中gets()和fgets()函数的用法 C++中gets()和fgets()函数可以...

    C++综合练习(带答案).pdf

    7. **头文件与实现文件**:在多文件的C++程序中,通常将类的声明(包括成员函数的声明)放在头文件(.h或.hpp)中,而将成员函数的实现放在实现文件(.cpp)中。主文件(通常是main.cpp)包含头文件并定义`main()`...

    C++程序设计教学课件:ch4 Functions.pdf

    通过以上内容,我们可以了解到C++中函数定义和声明的细节,理解头文件和预处理器的角色,以及如何在程序中合理使用函数。此外,还涉及到了如何处理函数的重复定义错误,以及inline函数的使用和优势。掌握这些知识点...

Global site tag (gtag.js) - Google Analytics