你也可以吗?例如,您可以使用std::cout << "Message";
在屏幕上打印一行,但如果您将using namespace std;
添加到代码顶部,则可以在不使用std::
的情况下使用它,只需使用它即可作为cout << "Message";
你能用你自己的代码做到吗?
编辑:让我解释一下。
假设我有A级:
//Class A
#include <iostream>
#include "A.h"
using namespace std;
class A {
public: void testFunction() {
cout << "My message";
}
};
然后,如果我正确设置了标题,我就能做到:
//Class B
#include <iostream>
#include "A.h"
using namespace std;
class B {
int main() {
A aObject; //Create the object
aObject.testFunction(); //This is how I'd have to reference it
return 0;
}
};
所以我想知道的是,即使它是在一个单独的类中,如何仅使用testFunction()
而不是aObject.testFunction()
来引用该函数
答案 0 :(得分:1)
只能在该类的对象上调用类的非静态成员函数。这就是它们的用途。您不必拥有命名对象,但仍需要一个对象:
A().testFunction();
如果您创建函数static
,那么您可以这样调用它:
A::testFunction();
谈论以任何其他方式调用该函数没有任何意义。这是成员函数的工作方式。听起来你真的想要一个非成员函数,可能在命名空间中。
答案 1 :(得分:0)
这是tutorialspoint的一个例子:
#include <iostream>
using namespace std;
// first name space
namespace first_space{
void func(){
cout << "Inside first_space" << endl;
}
}
// second name space
namespace second_space{
void func(){
cout << "Inside second_space" << endl;
}
}
using namespace first_space;
int main ()
{
// This calls function from first name space.
func();
return 0;
}
希望这有帮助。
也许这会更加明确:
#include <iostream>
using namespace std;
// first name space
namespace first_space{
void func(){
cout << "Inside first_space" << endl;
}
// second name space
namespace second_space{
void func(){
cout << "Inside second_space" << endl;
}
}
}
using namespace first_space::second_space;
int main ()
{
// This calls function from second name space.
func();
return 0;
}
答案 2 :(得分:0)
如果你想只通过它的名字来调用一个方法(比如在A类中),那么当一个方法具有相同的名称,参数,返回类型在另一个类(比如B类)时,它也会产生歧义在标题中。