public abstract class Transformation {
public abstract Vector3 Apply(Vector3 point);
}
虽然 C# 里的抽象类也需要其内部至少有一个纯虚函数,但这是由设计模式定义的(否则其只需要实现为一个普通函数即可),如果没有纯虚函数,编译器也不会报错(合法但无意义)。
// C++ 中,纯虚函数需显式声明
class Animal {
public:
// 纯虚函数(没有方法体),需显式说明为 “= 0”
virtual void MakeSound() = 0;
// 具体方法(有方法体)
void Sleep() {
std::cout << "Sleeping" << std::endl;
}
};
// C# 中,纯虚函数只需要空置方法体即可
public abstract class Animal {
// 抽象方法(没有方法体)
public abstract void MakeSound();
// 具体方法(有方法体)
public void Sleep() {
Console.WriteLine("Sleeping");
}
}
// C#: override 关键字在函数声明之前
public class Dog : Animal {
public override void MakeSound() {
Console.WriteLine("Woof!");
}
}
// C++:override 关键字在函数声明之后
class Dog : public Animal{
public:
void MakeSound() override {
std::cout << "Woof!" << std::endl;
}
};