c++マルチステートマルチインスタンス
7304 ワード
#include
using namespace std;
class A
{
public:
A()
{
cout << " A" << endl;
s = new char[20];
memset(s, 0, 20);
strcpy(s, "hahaha");
}
virtual ~A()
{
cout << " A" << endl;
delete []s;
}
virtual void print()
{
cout << s << endl;
}
private:
char *s;
};
class B : public A
{
public:
B()
{
cout << " B" << endl;
s = new char[20];
memset(s, 0, 20);
strcpy(s, "BBBBB");
}
virtual ~B()
{
cout << " B" << endl;
delete []s;
}
virtual void print()
{
cout << s << endl;
}
private:
char *s;
};
void ok(A *obj)
{
obj->print();
}
void okk(A obj)
{
obj.print();
}
1.
int main()
{
B *b = new B;
A *obj = b;
obj->print();
delete b;
/* A
B
BBBBB
B
A*/
}
2.
int main()
{
B *b = new B;
A *obj = b;
obj->print();
delete obj;
/* A
B
BBBBB
A*/
}
3.
int main()
{
B b;
A a = b;
A *pa = &b;
a.print();// a A , B A , , A 。
pa->print();// , A, B , A , Test B
/* A
B
hahaha
BBBBB
A
B
A*/
}
4.
int main()
{
B *b = new B;
ok(b);
/* A
B
BBBBB*/
}
5.
int main()
{
B *b = new B;
ok(b);
delete b;
/* A
B
BBBBB
B
A*/
}
6.
int main()
{
B b;
okk(b);
/* A
B
hahaha
A
B
A*/
}
7.
int main()
{
B *b = new B;
A a;
b = &a; // ,
ok(b);
}
転載先:https://www.cnblogs.com/lesroad/p/10778121.html