C++中对象间的相互操作例子(2005-6-1)
2005-06-01 21:07
519 查看
#include
using namespace std;
class A{
private:
int real;
int imag;
public:
char *string;
A(){
this->real = 10, this->imag = 20;
string = "from A()";
}
A(int a, int b){
this->real = a; this->imag = b;
string = "from A(), init a, b";
}
~A(){
cout << "Deleting class A" << endl;
}
int calcu(void){
return (real+imag)*2+4;
}
int chang(int a, int b){
real = a; imag = b;
}
};
class B{
private:
A *ap;
public:
B(A *p){
ap = p;
}
~B(){
cout << "Deleting class B" << endl;
}
int ControlA(){
cout << "Control A in B" << endl;
return ap->calcu();
}
int ChangA(int a, int b){
ap->chang(a,b);
}
};
class C : public B{
private:
A *pA;
public:
C(A *p) : B(p){
pA = p;
}
~C(){
cout << "Deleting class C" << endl;
}
void SetStr(){
pA->string = "Hi , I have been set!";
}
int ControlA(int a){
cout << "Control in A" << a << endl;
return pA->calcu();
}
};
void main()
{
A *pA = new A(14,2);
cout << "From Class A : "<< pA->calcu() << endl;
B *pB = new B(pA);
cout << "From Class B : "<< pB->ControlA()<< endl;
pB->ChangA(13,2);
cout << "From Class A : "<< pA->calcu() << endl;
cout << "String = " << pA->string << endl;
C *pC = new C(pA);
pC->SetStr();
cout << "String = " << pA->string << endl;
pC->ControlA(100);
pC->B::ControlA();
delete pC;
delete pA;
}
using namespace std;
class A{
private:
int real;
int imag;
public:
char *string;
A(){
this->real = 10, this->imag = 20;
string = "from A()";
}
A(int a, int b){
this->real = a; this->imag = b;
string = "from A(), init a, b";
}
~A(){
cout << "Deleting class A" << endl;
}
int calcu(void){
return (real+imag)*2+4;
}
int chang(int a, int b){
real = a; imag = b;
}
};
class B{
private:
A *ap;
public:
B(A *p){
ap = p;
}
~B(){
cout << "Deleting class B" << endl;
}
int ControlA(){
cout << "Control A in B" << endl;
return ap->calcu();
}
int ChangA(int a, int b){
ap->chang(a,b);
}
};
class C : public B{
private:
A *pA;
public:
C(A *p) : B(p){
pA = p;
}
~C(){
cout << "Deleting class C" << endl;
}
void SetStr(){
pA->string = "Hi , I have been set!";
}
int ControlA(int a){
cout << "Control in A" << a << endl;
return pA->calcu();
}
};
void main()
{
A *pA = new A(14,2);
cout << "From Class A : "<< pA->calcu() << endl;
B *pB = new B(pA);
cout << "From Class B : "<< pB->ControlA()<< endl;
pB->ChangA(13,2);
cout << "From Class A : "<< pA->calcu() << endl;
cout << "String = " << pA->string << endl;
C *pC = new C(pA);
pC->SetStr();
cout << "String = " << pA->string << endl;
pC->ControlA(100);
pC->B::ControlA();
delete pC;
delete pA;
}
相关文章推荐
- 以C++为例子,通过操作内存模拟实现对象的持久化存储(一)
- 以C++为例子,通过操作内存模拟实现对象的持久化存储(一)
- 以C++为例子,通过操作内存模拟实现对象的持久化存储(一)
- 【转载】c++之类的基本操作(c++ primer 的读书笔记 ,类对象, 类用户, 类成员的含义)
- 关于模板编程的一个例子 来自深度探索c++对象模型
- C++中对象的赋值与复制操作详细解析
- 明明白白c++之类的基本操作(c++ primer 的读书笔记 ,类对象, 类用户, 类成员的含义)
- POSTGRESQL大对象ID操作例子,文件上传到POSTGRESQL数据库
- C++指针、引用传参操作对象----测试
- 深入探索c++对象模型->2.2 Copy Constructor的构造操作
- C++讲义 第6章 类与对象的高级操作
- C++中一个class类对象占用多少内字节(7个例子,很清楚)
- C++对象模型——Default Constructor的建构操作(第二章)
- C++操作Redis的简单例子
- 关注C++细节——含有本类对象指针的类的构造函数、析构函数、拷贝构造函数、赋值运算符的例子
- C++对象模型之默认构造函数的构造操作,拷贝构造函数同
- C++如何彻底禁止掉对象的复制操作
- C++中一个class类对象占用多少内字节(7个例子,很清楚)
- 深入探索C++对象模型笔记之四 —— 构造函数语意学 (Copy Constructor的建构操作)
- C++ STL string对象操作汇总