#include<iostream>
using namespace std;
class A
{
public:
A(int m1, int n1):m(m1), n(n1){}
void display();
private:
int m;
int n;
};
void A::display()
{
cout << "m = " << m << endl;
cout << "n = " << n << endl;
}
class B :public A
{
public:
B(int m1, int n1, int p1) :A(m1, n1), p(p1){}
void display();
private:
int p;
};
void B::display()
{
A::display();
cout << "p = " << p << endl;
}
void print1(A& a)
{
a.display();
}
void print2(B& b)
{
b.display();
}
void print3(A a)
{
a.display();
}
void print4(B b)
{
b.display();
}
int main()
{
A a(3, 4);
// a.display();
B b(10, 20, 30);
// b.display();
A * pa;
B * pb;
pa = &a;
// pa->display();
pb = &b;
// pb->display();
// pa = &b;
// pa->display();
// pb = &a; //错误。派生类指针不能指向基类对象。
// print1(b);
// print2(a); //错误。不能用基类对象给派生类引用赋值。
// print3(b);
// print4(a); //错误。不能用基类对象给派生类对象赋值。
// pb = pa; //不能用基类指针给派生类指针赋值。
pb = (B*)pa; //可以强制转换,但是非常不安全。
pb->display(); //出现安全问题,p无法访问,因为a中没有p成员
system("pause");
return 0;
}
A a(3, 4); // a.display(); B b(10, 20, 30); // b.display(); A * pa; // B * pb; // pa = &a; // pa->display(); // pb = &b; // pb->display(); pa = &b; pa->display(); //会输出 10 20
A a(3, 4); B b(10, 20, 30); A* pa; int number; cin >> number; if (number >= 0) pa = &a; else pa = &b;
A a(3, 4); B b(10, 20, 30); print1(b); //会输出 10 20
A a(3, 4); B b(10, 20, 30); print3(b);
A a(3, 4); B b(10, 20, 30); A * pa; B * pb; // print2(a); //错误。不能用基类对象给派生类引用赋值。 // print4(a); //错误。不能用基类对象给派生类对象赋值。 // pb = &a; //错误。派生类指针不能指向基类对象。 pa = &a; pb = &b; //pb = pa; //错误。不能用基类指针给派生类指针赋值。 pb = (B*)pa; //可以强制转换,但是非常不安全。 pb->display(); //出现安全问题,p无法访问,因为a中没有p成员
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有