c++中的问题,请指教!

来源:百度知道 编辑:UC知道 时间:2024/06/14 03:57:40
我看的这本书写的不太详细,有个地方看不明白,如下(部分用"...."简写):
#include<stdio.h>
#include<string.h>
#include<iostream.h>
class Cargo
{
........
public:
char *getOwner
........
};
.........
char *Cargo::getOwner()
{
return owner;
}
........

int main()
{
char owner[40];

cout<<"请输入姓名:";
cin>>owner;
cin.ignore();

Cargo c(owner);

//显示
cout<<"用户名:"<<c.getOwner()<<end1;
......
return 0;
}

上面的程序我省了不少,希望都能看明白,我不明白的是:显示名字为什么要调用类中的getOwner呢?如果不用getOwner,直接把
cout<<"用户名:"<<c.getOwner()<<end1;
换成
cout<<"用户名:"<<owner<<end1;
不知道上面的可行不可行?!为什么呢?如果可行,那么调用有什么作用,感觉多此一举了.
请高手点点我,不明白了!!
这书上明明第一次出现这样的写法,却只写了几个字:
//取得信息:
char *Cargo::getOwner()
{
return owner;<

这当然不是多此一举了,这是C++类的特点之一:封装性。
就是将数据与方法分离。
一般类都会隐藏自己的数据成员,而将成员函数与人共享。
隐藏数据成员是为了避免别人修改。
类对于使用它的人来说就像一个黑匣子,使用的人只知道它会做什么,但不知道它怎么实现的,也不必知道。

在类里有三种类型的数据或方法:
public//非类的成员也能访问
protected//类的成员和类的派生类对象可以访问
private//只有类的成员才能访问

上面的例子中
owner应该是private的,因此在main()函数中输出的时候不能直接这样输出cout<<"用户名:"<<owner<<end1;

cout<<"用户名:"<<c.getOwner()<<end1;
是合法的,因为是类的成员函数getOwner()在调用owner。

你多看下书就会明白了,尤其是类的封装性。

倒,代码不全,估计书上是举例子,给你解释内存的使用情况
owner是由构造函数传递到类的,不知道做了什么?
其次其他成员的使用可能改变了c的owner成员
还有
cout<<"用户名:"<<owner<<end1;
的owner和c.getowner()不一样,类里面还应该有一个owner成员的字符指针
,给个完全代码看看才好
不知道你明白了没用