C++类机制 的一个问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 05:21:47
请教高手 我跟书上写个代码 但有错误不知道哪错了 高手看一下
我对类现在有点迷糊希望能指点下。
#include<iostream.h>
#include <stdlib.h>
#include <stdio.h>
class china
{
privte:
char *man;
char *woman;
china *zhizhen;

public :
voud hello(void);
void hanshu(china *zhizhen);
};
china bianliang;

main(void)
{

bianliang.hello();

}
void china :: hello(void)
{
bianliang.zhizhen=&bianliang;
bianliang.man="jack";
bianliang.woman="kikty";
bianliang.hanshu(bianliang.zhizhen);

}
void hanshu :: hanshu(china *zhizhen)
{
cout<<zhizhen->man<<endl;
cout<<zhizhen->woman<<endl;
system ("pause");
}
我知道这段程序错误很多,我有很多地方感觉书上写的不对 请高手帮我分析下 给我写个对的,然后给我说明下,书上讲的 我挺迷糊的,谢谢了。
可能我代码上有些字符写错了
我主要是不懂 为什么 我跟书的调用不起来
我试着自己修改调用函数,但编译器 不报错,但什么也不出
我主要是调用

主要是hello函数有错误!
void china :: hello(void)
{
bianliang.zhizhen=&bianliang;
bianliang.man="jack";
bianliang.woman="kikty";
bianliang.hanshu(bianliang.zhizhen);

}
其中的bianlian不是类china的成员而是类china的实例。类成员函数只能对类中的成员进行处理,如果对一个具体的对象处理则应该向第二个函数void hanshu :: hanshu(china *zhizhen) 那样将对象通过形参传人。而且hello函数没有一句是正确的,对于man和woman是char*类型,直接赋值给它只能在初始化才可以,如:
const char *ptr = "hello world";
而char *ptr;
ptr = "hello world";
是不能通过编译的。应该使用:
ptr = new char[strlen("hello world") + 1];
strcpy(ptr, "Hello world");
即对于char *指针赋值,应先分配内存,再使用有关函数进行。
void china :: hello(china *ptr)
{
man = new char[strlen("jack") + 1];
strcpy(man, "jack");
//woman here.
hanshu(ptr);

}