一个类的成员函数的定义 可以放在头文件中吗?

比如说 在头文件中声明了一个类的成员函数 一个定义这个成员函数在CPP中 请问这个定义可以在头文件 声明的那个类中吗?

语法上是可以这样做的,但是在编程规范中并不鼓励这样做。
成员函数一般是不可以在头文件中定义的,只能在头文件中声明。因为函数只能有一次定义,而可以有多次声明,当头文件被多次包含的时候,如果头文件中有函数定义就违背了这个原则
#ifndef XXX_H
#define XXX_H
class CA {
......
}
#endif
如果头文件中没有这样定义的话,多次包含一样编译不通过.

成员函数在不在头文件中定义,其实都没多大关系,但如果程序是提供给别人作为库,而在头文件中定义成员函数,别人就会看到程序的实现,在.cpp中定义,人家使用时调用的是库文件,看到的只是头文件中的声明,而不知道实现过程.
还有一些规则是,有些成员函数是必须在类声明中定义的,如类的静态成员函数,inline函数.
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-04
可以这样,但是不推荐。
因为头文件中一般制包括声明,而不是定义。如果定义的话,代码较多,多次包含该头文件后可能导致程序体积变大
第2个回答  推荐于2017-09-30
可以,声明和定义也可以写在一起,比如在头文件中,
class A
{
public:
void MethodA()
{

};
};本回答被提问者采纳

一个类的成员函数的定义 可以放在头文件中吗?
成员函数一般是不可以在头文件中定义的,只能在头文件中声明。因为函数只能有一次定义,而可以有多次声明,当头文件被多次包含的时候,如果头文件中有函数定义就违背了这个原则 ifndef XXX_H define XXX_H class CA { ...} endif 如果头文件中没有这样定义的话,多次包含一样编译不通过.成员函数在不...

c++ : 成员函数的实现部分(写在类外),究竟属于类的内部还是外部?
}虽然是在类外实现但是必须要用作用域解析运算符,编译器才知道这是a类的作用域的函数,否则就报错!所以咯,不管是哪里实现都保证是在这个作用域内部,也就是说本来就是属于类内部的

c++为啥类的成员函数可以这样在类外定义
不是可以在类外定义,而是最好在类外定义。C++有头文件和源文件,头文件放声明,源文件放定义。如果在头文件中定义,当项目比较大而复杂的时候也即头文件相互包含的时候,编译时会报重复定义的错误。

成员函数为什么有的在类内定义有的在类外定义
当函数体较长时,定义在类外, 这样可以增加类定义的可读性。相信你也不愿意找一个类成员是如何声明的,而去翻几十上百行代码。另外,如果是多文件工程,尤其是封装成库的情况下,为了稳定及保护, 大多数成员会定义在源文件,而声明放在头文件。发布库的时候保证类内成员实现不会被修改。

C++中对自定义函数的声明,放main内还是外,在含类的程序中,貌似只能在...
一般放在函数外,调用之前。放在哪跟有类没类没有直接联系。实践中一般将函数声明、类的定义放在头文件中。而定义放在单独的源文件(.cpp)。如果有哪个源文件中用到了头文件中声明的函数或类,只需#include “***.h”将头文件包含进来。

在VC++6.0中怎样自己定义的一个类放入到一个头文件中?
C++中,一般把类的定义放到头文件(.h)中,把类的实现放到源文件(.cpp)中,所以,一般在C++中,一个类一般需要一个与类同名的头文件和一个源文件。比如定个一个类 Sample,类中定个一个私有成员变量,和两个公共成员函数,有如下代码:\/\/Sample.h class Sample { private:DWORD dw; \/\/私有成员...

c++基础问题:头文件 , 源文件 , 资源文件,分别是什么。要在你面定义什 ...
源文件就是.cpp文件,一般用来放你在头文件里声明的类成员函数的具体实现,一般一个.h文件总会有一个同名的.cpp 譬如现在我有一个类 class T { void printf(){} } 这些内容就放在.h文件中 void T::printf(){...} 这些内容就放在.cpp文件中 (MFC的消息衍射类都是这样的)至于资源文件就是...

C++中如果要用的类定义在使用之后,该怎样声明?
不完全类型(incomplete type)只能以有限方式使用。不能定义该类型的对象。不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数。include<iostream.h> include<stdio.h> include <conio.h> class A;class B { private:int i;A &a;public...

C++中如何在类模板外定义函数
1.这是不允许的,因为模板类的成员函数的定义,是一种不完整的定义.2.由于编译器不知道模板参数的具体类型,无法为其成员函数生成代码.3.编译器在成员函数的调用处,才最终知道如何生成代码.总之,模板类的成员函数的定义不能像普通类的成员函数一样,定义在源代码中,而只能定义在头文件中.如果想...

请问C++中成员函数在类里面定义和在类外定义有什么区别?
性能来说没啥区别,不过放在类外,代码的定义和实现分开,有利于代码封转,别人需要调用你的接口的时候,你可以只给他头文件,代码的实现自己留着 而且这样条理也清楚吧

相似回答