我已经查看了所有内容,但我找不到涉及::
运营商的任何资源。
我有两个课程:A
和B
。我还有另一个班级C
。
B
继承自A
,C
也是如此。
A
包含一个名为d
的方法:
A
的{{1}}档案:
.h
class A
{
public:
...
void d();
};
的{{1}}档案:
A
如果我有.cpp
或...
void A::d()
{
...
}
,并且我运行了B
,那么如果C
或d
没有B
,则应该运行此方法他们自己被覆盖C
。
我想覆盖d
中的d
,但我不清楚我是如何做到这一点的。我应该在B
的{{1}}文件中执行此操作吗?:
B
或
.cpp
并在void A::d()
{
...
}
的{{1}}文件中声明它?
或者函数应该是void B::d()
{
...
}
吗?
答案 0 :(得分:4)
覆盖是虚拟成员函数的属性,它是类定义的一部分。
示意图,您想:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/FileUpload")]
void FileUpload(Patron patron);
public void FileUpload(Object patron)
{
byte[] newBytes = null;
BinaryWriter Writer = null;
string Name = @"C:\\Temp\\" + object.Param1String + "";
//byte[] bData = Helper.CopyToArray(object.ByteArray);
try
{
newBytes = Convert.FromBase64String(patron.ByteArray);
Writer = new BinaryWriter(File.OpenWrite(Name));
Writer.Write(newBytes);
Writer.Flush();
Writer.Close();
}
catch
{
//return false;
}
}
用法:假设你有这个功能:
struct A
{
virtual void d() { /* A's implementation */ }
};
struct B : A
{
void d() override { /* B's override of A::d */ }
};
struct C : A
{
}:
然后:
void g(A & a) { a.d(); }
(如何将代码拆分为不同的文件与继承和覆盖无关。)