繁体   English   中英

C ++中的void function()和void ClassName :: function()有什么区别?

[英]What is the difference between a void function() and a void ClassName::function() in C++?

它们之间有什么区别? 它们都是一个对象吗? (初学者问题)

可以在没有任何特定类的实例的情况下调用void函数。

function()

对于ClassName::function()您需要在ClassName类型的特定对象上调用它:

ClassName my_class;
my_class.function();

调用时, ClassName::function()将具有一个隐藏的隐式函数参数this ,可以在函数体内使用。 它是指向在其上调用ClassName::functionClassName对象的指针。 您还可以访问其他班级成员。

另一个相关的区别是您可以随时获取指向function()的指针并随时调用它,而当您获取指向ClassName::function()的成员函数的指针时,您还需要一个特定的ClassName对象您要运行该功能的时间。

可以在没有对象的任何地方调用名称空间作用域函数:

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 ClassName::function()

是在您的类中调用一个函数。 成员函数 并应通过使用您的类的对象来调用。 而,

void function() 

只是一个函数,可以在没有对象的情况下调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM