C++类句柄问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:50:23
#ifndef HANDLE_H_
#define HANDLE_H_
class handle
{
struct cheshire;
cheshire *smile;
public:
void initialize();
void cleanup();
int read();
void change(int);

};
#endif

#include "handle.h"
#include <stdlib.h>
#include <assert.h>
void handle::cheshire()
{
int i
}
void handle::initialize()
{
smile=new cheshire;
assert(smile);
smile->i=0;
}
int handle::read ()
{
return smile->i;

}
void handle::cleanup()
{
free(smile);
}
void change(int x)
{
smile->i=x;
}
main()
{
handle u;
u.initialize ();
u.read();
u.change(1);
u.cleanup ();

}
我基本的类和函数都能看懂,有的细节和基础问题有点不懂,还有这个程序所表达的思想不太明白。基本问题是:smile->i=x;??smile->i=0;?
还有思想类句柄

这个程序表达的是基本的面向对象思想

主函数main()中仅仅实例化了一个handle类的对象u,然后通过u自身的成员函数去操作对象u本身.
u.initialize ();
u.read();
u.change(1);
u.cleanup ();
这四个函数都是u的成员函数.
对象u中除了这4个成员函数还有一个数据成员smile,是cheshire类型的指针
cheshire类型有子成员i
而void initialize(); void cleanup(); int read(); void change(int); 这4个函数都是用来操作这个i

smile->i=x就是把x赋值给smile所指向的cheshire对象的i成员
smile->i=0就是把0赋值给smile所指向的cheshire对象的i成员