c++中类的成员函数的原型申明和实现应该在什么地方?

作者&投稿:仲长梁 (若有异议请与网页底部的电邮联系)
C++类的成员函数原型~

类的成员函数随类的不同而不同,随着目的要求的不同也不同,不可能提供类似单一功能的函数,所以说,压根就没有这样的函数,故不存在原型的。

虽然很多程序员都熟悉名字空间的概念,但他们常常都是被动地使用名字空间。也就是说他们使用的是第三方定义的成员(如标准库的类和函数),而不是在名字空间中声明自己的类和函数。本文拟讨论如何在名字空间中声明自己的类和函数,以及如何在程序中使用它们。
名字空间是一个范畴,它包含类声明,函数声明,常量声明和模板声明等名字空间成员。例如:
namespace proj_alpha
{
//下面是名字空间 proj_alpha 的成员
class Spy {/*..*/};
void encrypt (char *msg);
const int MAX_SPIES = 8;
}
在上面的例子中,类Spy在一个单独的文件中实现。通常,你是在一个专门的头文件中声明一个类并在不同的源文件中独立地定义其成员函数。那么如何将名字空间成员类分离成多个源文件呢?
下面是名为 Foo.hpp 的头文件,其中定义了一个名为NS的名字空间,它包含类Foo的声明:
//Foo.hpp
namespace NS
{
class Foo
{
public:
void f();
void g();
};
}//close NS
另外,在一个单独的源文件Foo.cpp中,首先包含头文件Foo.hpp以便实现类Foo的成员函数f()和g():
//Foo.cpp
#include "Foo.hpp"
void NS::Foo::f()
{ /*..*/ }
void NS::Foo::g()
{ /*..*/ }
为了使用名字空间成员,必须使用成员的全路径名,它由名字空间后跟::合成原名组成。因此,类Foo的全路径名是NS::Foo。这样编译器便可以知道NS是一个名字空间名,头文件Foo.hpp必须在引用NS之前被包含。
名字空间是可以扩展的。也就是说可以声明类,而且所声明的类在其它的.cpp文件中是相同的名字空间成员:
//Bar.hpp
namespace NS //扩展 NS
{
class Bar
{
public:
void a();
void b();
};
}
在Bar.cpp文件中:
#include "Bar.hpp"
void NS::Bar::a()
{/*..*/}
void NS::Bar::b()
{/*..*/}
可以看出,虽然Foo和Bar这两个类在不同的头文件中声明,但它们都是名字空间NS的成员。并且编译器和链接器将这两个类看成是同一名字空间的成员。那么,如何在应用程序中使用这些类呢?
在文件main.cpp中,必须要包含声明类Foo和Bar的头文件并加上相应的名字空间引用声明-using:
#include "Bar.hpp"
#include "Foo.hpp"
int main()
{
using NS::Bar; //使用名字空间
using NS::Foo; //同上
Bar b;
Foo f;
f.f();
//...
}
using声明由关键字using后跟名字空间成员的全路径。这样就使你在using声明范围内使用成员时不用再加路径。上面的例子中,可以直接使用Foo和Bar,因为在main()的开始使用了using声明。如果没有using声明就必须使用全路径成员名。
int main()
{
NS::Bar b; //全路径名
NS::Foo f; //同上
//?
}
另外,还有一种引用名字空间成员的方法是使用using指令:
#include "Bar.hpp"
#include "Foo.hpp"
int main()
{
using namespace NS; // using 指令
Bar b;
Foo f;
f.f();
//...
}
using指令由关键字“using namespace”后跟名字空间名构成。在访问名字空间成员时它是使用最少的一种方法,原因是这种方法将所有名字空间成员注入当前的范围,从而增加了潜在的名字冲突。

成员函数的声明要放在类体中,成员函数的实现可以放在类体中,也可以放在类体外,一般比较简单的成员函数放在类体中,复杂的成员函数放在类体外。

成员函数的申明应该放在类体中,C++默认成员为私有private:一般情况下类的声明是写点H文件中.而实现是写在点CPP文件中.

成员函数的原型申明应该在头文件里. 实现在主函数里。


类中的这两个成员函数: const int fun(){} 和 int fun() const{}...
1.const int fun(){} 此处的const其实没有意义,等同于 int fun(){} ,因为函数返回的本身是一个固定值,加不加const无所谓,它只是类的一个普通的成员函数而已。2.int fun() const{} 则是类的常成员函数。它不能更新对象的数据成员,也不能调用该类中没有const修饰的成员函数(这就保证了在...

C++项目中的成员函数和全局函数的使用
首先,你应该明白,所谓类的成员函数,其实并不是类本身的东西,归根到底其实还是一个有限制了的全局函数,或者说是个局部函数,比如 class a { int x;int y;int xxxx(int c);void a(vopid);} 定义了一个这样的类,sizeof(class a),得到的是8,就是x.y的类型 函数都不计算在内 所以,其...

C++中,类中所提供的成员函数可以直接访问私有成员吗??
可以.公有成员函数,是类的接口.用户就是通过这个接口来进行访问.如果它都不可以的话,那么那些私有成员,不是没的访问了吗.那定义那些还有什么用?!同时,类中还可以定义友元.友元函数或友员类,也可以访问到类的私有成员.

如何在一个类中调用另一个类的成员函数
} 在其他类中调用的方式是 public static void main(String[] args) { String name = class_1.nema;}

如何在主函数中调用类中的成员函数调用
主函数中调用类中的成员函数调用方式为:对象名.成员函数名(参数列表)。其中“.”是成员运算符,用来对成员进行限定,指明所访问的是哪一个对象中的成员。不仅可以在类外引用对象的公用数据成员,而且还可以调用对象的公用成员函数,但同样必须指出对象名,如:stud1.display( );\/\/正确,调用对象stud1...

C++运算符重载中 重载为类的成员函数和重载为类的友元函数 的区别是...
类的成员函数定义就在类里面,但是类的友元函数定义在其他类里面。调用的函数不在同一个类中,它们定义也不在同一个类中。

类中构造函数和成员函数相同吗
不一样,类中的构造函数是声明一个类的对象后,自动的调用的,但成员函数是用户使用时才会调用,通常的话一个类的成员变量的初始化都是通过构造函数来实现的 ,至于是不是非要和new运算符一起使用也不一定,你只要声明一个类的对象后,编译系统都会调用构造函数的,只是生存周期只是在此段程式的大括号...

类中的成员函数能相互调用吗?
能相互调用,要注意有跳出这种递归调用的条件,防止死在里面

C++如何在一个类的成员函数中调用另一个类的成员函数
1、首先声明如下所示的类,类内部定义一个public的整型数据成员。2、主函数中定义指向类的数据成员的指针。3、声明类的对象,该对象变量调用指向类的数据成员的指针进行赋值操作。4、然后输出打印类的数据成员,从结果看,上一步的操作赋值成功。5、定义类的指针,通过指针指向对象成员的指针来进行赋值。...

什么是成员函数
就是一个类(class)里面所定义的函数 例如 class A { public:void B();private:int C();protected:bool D(int i);};那么,B(),C(),D(int)都是A的成员函数

深泽县17070534501: C++成员函数的声明 -
闫俭十味: 成员函数相当于C或C++中的函数.你应该用如下的方式说明一个成员函数: Type name (Parameter) //function body 注意:每一个成员函数必须返回一个值或声明返回为空(void).它返回类型的说明告诉编译器它将返回什么类型的值.在某些...

深泽县17070534501: C++中Time类的类声明及成员函数的实现. -
闫俭十味: #include <iostream>#include <iomanip>using std::cout; using std::endl; using std::setfill; using std::setw;/** * @class Time. * @brief 时间类. * 时间类,包含简单的设置时间,打印时间的功能. */ class Time { public:/*** @function Time* @brief ...

深泽县17070534501: c++ 类中 静态成员函数 怎样声明和定义? -
闫俭十味: //示例类demo class demo{ public: //静态成员函数Print的申明定义 static void Print( void ) { std::cout << "this is a static method." << endl; } }

深泽县17070534501: C++成员函数声明 -
闫俭十味: 这两个函数都是纯虚函数,只是第一个带了一个const声明,表示该纯虚函数还是const函数.

深泽县17070534501: 类和对象的成员函数 -
闫俭十味: 类的成员函数(简称类函数)是函数的一种,它的用法和作用和第4章介绍过的函数基本上是一样的,它也有返回值和函数类型, 它与一般函数的区别只是: 它是属于一个类的成员,出现在类体中. 它可以被指定为private(私有的)、public ...

深泽县17070534501: C++中函数声明与函数原型有什么区别 -
闫俭十味: 在C++已经没什么差别了.传统C的函数声明难以保护类型安全,所以后来推出了类型安全的“原型”概念. 在C里要不要用原型是可选的. 但是在C++里只能用原型声明, 所有函数声明和定义都是使用原型的, 所以“原型”这个说法已经用不着强调了

深泽县17070534501: C++中,如何申明一个成员函数,使其不能修改类的数据. -
闫俭十味: 函数声明的末尾加上 const.例如 void p() 改为 void p() const

深泽县17070534501: C++ 成员函数定义 -
闫俭十味: Student::Student(int n) { pscore = new int[4]; } Student::~Student() { delete [] pscore; }

深泽县17070534501: 怎么用c++进行函数原型声明,定义 -
闫俭十味: 1 2 3 4 5 6 7 8 9 10 11classA {voidfunction1();//C++中函数的声明 }; voidmain() {A a; } voidA::function1()//C++中函数的定义 { }

深泽县17070534501: C++如何将一个类的成员函数申明为另一个类的友元函数 -
闫俭十味: 已改,看注释#include using namespace std;class B //把B类放前面定义{private: int c;public: void display();};class A{private: in...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网