我正在阅读一本用于自学编程的C ++教科书。
现在我在下面的段落中有一个关于遗产的问题
以红色加下划线。
我不明白那个意思是什么意思。
在类声明和方法定义之外使用类方法(类函数成员)。
如何在方法定义之外使用类方法(类函数成员)?
有哪些特殊措施?
有人可以帮我吗?
提前致谢。
答案 0 :(得分:0)
这意味着如果您在Stock
的其他方法中使用它,则不需要类范围Stock::Update()
,例如
void Stock::Foo()
{
// Do stuff
Update(10.0); // This is Stock::Update()
}
但是如果你在Stock
类的方法之外的某个函数中调用它,则需要一个Stock
的实例来调用该方法,因为它不是static
void Bar()
{
Stock stock;
// Do stuff
stock.Update(10.0); // This will find the Stock:: scope
}
这也意味着方法Update
必须为public
,您才能在上面的示例Bar
中调用它。如果是private
,则只能使用其他Update
方法调用Stock
方法。
class Stock
{
public:
void Update(double price);
};
答案 1 :(得分:0)
我认为基本上它意味着为了从其他代码(main方法,其他类方法体等)使用这个类方法,你需要额外的措施。有了这个,它基本上意味着你必须使这个类对你尝试使用它的范围可见(通常通过包括它所定义的标题),这样你就可以实例化这个类的变量/对象并在其上调用它的方法。
例如,要从其他代码中使用此类(让我们称之为foo),您必须执行以下操作:
#include "foo.h"
void MyClass::bar()
{
Foo instanceOfFoo;
instanceOfFoo.Update();
....
}
如果需要从Foo类.cpp文件中调用Update()方法,则无需创建自身的实例。因此,您可以使用这些附加度量调用其方法。因此,Foo类方法可以像下面这样调用Update:
void Foo::SomeMethod()
{
Update(); //
}
实际上上面的方法有一个名为 this 的隐藏参数,它引用了Foo类的当前实例。所以上面的代码就像:
void Foo::SomeMethod(Foo* const this)
{
this->Update(); //
}