结合笔记本
程序:
#include <iostream>
using namespace std;
class Base1 {
public:
virtual void display() const; //虚函数
};
void Base1::display() const {
cout << "Base1::display()" << endl;
}
class Base2:public Base1 {
public:
virtual void display() const;
};
void Base2::display() const {
cout << "Base2::display()" << endl;
}
class Derived : public Base2 {
public:
virtual void display() const;
};
void Derived::display() const {
cout << "Derived::display()" << endl;
}
void fun(Base1 *ptr) {
ptr->display();
}
int main() {
Base1 base1;
Base2 base2;
base1.display();
base2.display();
Derived derived;
fun(&base1);
fun(&base2);
fun(&derived);
return 0;
}
#include <iostream>
using namespace std;
class Base
{
public:
virtual void fun1() = 0;
virtual void fun1(int)
{
}
virtual void fun2()
{
}
void fun2(int)
{
}
void fun3(float)
{
}
};
class Derived :private Base
{
public:
virtual void fun1()
{
cout << "This function is implemented to avoid to be a abstract class";
}
void CallBaseFun2(int x)
{
Base::fun2(x);
}
};
int main()
{
Derived a;
a.CallBaseFun2(3);
a.fun2(); //incorrect
cout << "Hello world!" << endl;
return 0;
}
#include <iostream>
using namespace std;
class Base
{
public:/*
virtual void fun1() = 0;*/
void fun1()
{
cout << "爸爸1" << endl;
}
//virtual void fun2()
//{
// cout << "爸爸2" << endl;
//}
//void fun2(int)
//{
// cout << "爸爸2整形" << endl;
//}
//void fun3()
//{
// cout << "爸爸3" << endl;
//}
};
class Derived :public Base
{
public:
void fun1()
{
cout << "女儿1" << endl;
}
//void fun3()
//{
// cout << "女儿3" << endl;
//}
//void fun4()
//{
// cout << "女儿4" << endl;
//}
};
class DDerived :public Base
{
//public:
public:
// void fun1()
//{
// cout << "二女儿1" << endl;
//}
};
int main()
{
//Derived a;
//a.fun1(); //correct Derived:fun1();
////a.fun1(8); //incorrect
//a.fun2(); //correct Base:fun2()
//a.fun2(3); //correct Base:fun2(int);
//a.fun3(); //correct Derived:fun3()
////a.fun3(3.0); //incorrect
//cout << "Hello world!" << endl;
Base a;
Derived nver;
DDerived ernver;
Base *ptr;
////ptr->fun3();
////cout << ptr << endl;
ptr = &nver;
//cout << ptr << endl;
ptr->fun1();
nver.fun1();
ptr = &ernver;
//cout << ptr << endl;
ptr->fun1();
nver.fun1();
//ptr = &er
//ptr = &ernver;
//cout << ptr << endl;
//ptr->fun1();
return 0;
}