C++ C+;中的void function()和void ClassName::function()有什么区别+;?
他们之间有什么区别?它们都是每个对象一个吗?(初学者问题)可以在没有任何特定类实例的情况下调用void函数。。。i、 打电话给C++ C+;中的void function()和void ClassName::function()有什么区别+;?,c++,function,C++,Function,他们之间有什么区别?它们都是每个对象一个吗?(初学者问题)可以在没有任何特定类实例的情况下调用void函数。。。i、 打电话给 function() 对于ClassName::function()您需要在类型为ClassName的特定对象上调用它: ClassName my_class; my_class.function(); 调用时,ClassName::function()将有一个隐藏的隐式函数参数this,可在函数体内部使用。它是指向调用了ClassName::function的Cl
function()
对于ClassName::function()
您需要在类型为ClassName
的特定对象上调用它:
ClassName my_class;
my_class.function();
调用时,ClassName::function()
将有一个隐藏的隐式函数参数this
,可在函数体内部使用。它是指向调用了ClassName::function
的ClassName
对象的指针。您还可以访问其他类成员
另一个相关的区别是,您可以获取指向
function()
的指针并随时调用它,而当您获取指向ClassName::function()的成员函数的指针时
在运行函数时,您还需要一个特定的类名
对象。可以在没有任何特定类实例的情况下调用void函数。。。i、 打电话给
function()
对于ClassName::function()
您需要在类型为ClassName
的特定对象上调用它:
ClassName my_class;
my_class.function();
调用时,ClassName::function()
将有一个隐藏的隐式函数参数this
,可在函数体内部使用。它是指向调用了ClassName::function
的ClassName
对象的指针。您还可以访问其他类成员
另一个相关的区别是,您可以获取指向
function()
的指针并随时调用它,而当您获取指向ClassName::function()的成员函数的指针时
在运行函数时,您还需要一个特定的类名
对象。可以在没有对象的任何位置调用命名空间作用域函数:
int foo();
void bar() {
int x = foo();
}
成员对象需要调用实例,这在另一个成员函数的上下文中暗示:
struct B {
int foo();
int fred() {
if (true) {
return foo(); // OK, local object implied
}
return n; // member function can also access member variables
}
static int george(); // static members can be called without instances!
int n;
};
void baz() {
B b;
int x = B::george(); // static class members don't need instances.
int y = b.foo(); // member function on object OK
//int z = foo(); // XXX: this wouldn't compile
}
命名空间作用域函数可以在没有对象的任何位置调用:
int foo();
void bar() {
int x = foo();
}
成员对象需要调用实例,这在另一个成员函数的上下文中暗示:
struct B {
int foo();
int fred() {
if (true) {
return foo(); // OK, local object implied
}
return n; // member function can also access member variables
}
static int george(); // static members can be called without instances!
int n;
};
void baz() {
B b;
int x = B::george(); // static class members don't need instances.
int y = b.foo(); // member function on object OK
//int z = foo(); // XXX: this wouldn't compile
}
是对类内函数的调用成员函数。应该使用类的对象调用。而
void function()
只是一个函数,可以在没有对象的情况下调用
是对类内函数的调用成员函数。应该使用类的对象调用。而
void function()
只是一个函数,可以在没有对象的情况下调用。要附加到该函数的任何特定上下文?您的意思是出现在类声明中还是出现在类命名空间之外?(我希望后者是显而易见的)。你想附加什么特殊的上下文?您的意思是出现在类声明中还是出现在类命名空间之外?(我希望后者是显而易见的)。静态成员函数与自由函数非常相似。。。。但有时有一个非常方便的好处,即访问类私有成员(函数和变量),而不需要交友。(+1 btw)静态成员函数与自由函数非常相似。。。。但有时有一个非常方便的好处,即访问类私有成员(函数和变量),而不需要交友。(+1 btw)