请大家指点有关(类)的问提!!!谢谢
谁有空指点一下!
请解释一下:类,对象,公有,私有。
小弟这里看了好几遍都没弄明白请指点一下或介绍一篇好文章。
谢谢~~!!! |
请大家指点有关(类)的问提!!!谢谢
谁有空指点一下!
请解释一下:类,对象,公有,私有。
小弟这里看了好几遍都没弄明白请指点一下或介绍一篇好文章。
谢谢~~!!! |
2004-06-07 13:50
类其实像一个月饼帽,而对象(又称"实例")就是月饼,用一个月饼帽可以印出很多个一样的月饼,就好象类可以实例化很多一样的对象.看下面一个例子:
class Cat { public: int age; string name; }; 上面设计了一个Cat类,这个Cat类里面有两个共有属性,age和name,分别表示猫的年龄和名字。然后我们就可以用上面的Cat类制造出很多Cat对象了:
void main() { Cat myCat1; Cat myCat2; Cat myCat3; }
上面在main函数里,根据前面所创建的Cat类,实例化了3个Cat对象,它们分别是myCat1,myCat2和myCat3.好,现在有了3只猫了,我们可以让他做一些事情了,比如跟它们起名字:myCat1.name="Hello Kity";等等.....
要是还不明白的话就看这句比喻:在科幻电影里,经常会听到"克隆人",就是制造出很多一模一样的人,那制造他们的时候都是根据一个严格的模版制造出来的,这个模版规定了制造出来的人的各种属性,如身高,性别,肤色等。那么这个模版就是面向对象里面的类!~~
2004-06-07 19:49
嗯!谢谢你!类和对象我明白了。
可是我对公有,私有这两个词还是弄不懂。我的书上一标提为:“使成员数据私有”请问一下,为什么把数据变为私有,不是只有在公有的情况下在任何地方才可以访问该数据吗。
2004-06-07 21:06
呵呵~~其实很简单,每样事物总有你看到的和看不到的东西吧~~~
同样,你可以把一个对象里的所有成员都公开~~,而这就意味着对象里的所有成员都能被外界直接访问和修改,难道你不觉得这样很不安全吗?看下面一个例子,一个"班"类:
class Class { public: string StudentName[50]; //班里各学生的名字集合,班里最多只能有50位同学 int StudentCount; //班里学生的总数 void Add_Student(string name) //添加学生的方法 { StudentCount++; StudentName[StudentCount-1]=name; } }; 注意:忽略构造函数
在上面的例子里,Class类的所有成员都是公开的,这就意味着可以通过对StudentCount直接修改来改变班里学生的总数,可是这里有一个成员:StudentName[],它是用来储存班里各学生的名字的.要是只把StudentCount加1,可是没有在StudentName里也左相应修改的话,两个数据成员就出现了不协调了~~例如: void main() { Class myClass; myClass.Add("Tom"); myClass.StudentCount++; } 现在你能够说出班里真的多了一位同学吗?虽然班的学生总数多了一个,可是同学名称集里只有 Tom一个人,多出的那一个...........鬼?呵呵,把特定的数据成员隐藏(私有化)掉能够避免出现这类情况:
class Class { public: void Add_Student(string name) //添加学生的方法 { StudentCount++; StudentName[StudentCount-1]=name; } private: string StudentName[50]; //班里各学生的名字集合,班里最多只能有50位同学 int StudentCount; //班里学生的总数 }; 现在,外界就只能使用Add_Student()方法修改班里的学生总数了~~~~
2004-06-07 22:51
上面的问提我弄明白了!谢谢大家!不过现在又有问提了。我对类和对象学的太差可是看书又看不明白所以还要请大家看一下!
class cat
{
public:
unsigned int GetAge();
void SetAge(unsigned int Age);
unsigned int GetWeight();
void SetWeight(unsigned int Weight);
void Meow();
private:
unsigned int itsAge;
unsigned int itsWeight;
};
分析:这个类有5个公有方法。第8、9行中包含有istAge的访问方法。第11 12行含有itsWeight的访问方法。这些访问函数设置成员变量并返回它们的值。//请问一下这里为什么返回它们的值???
第15行声明了公有成员函数Meow()。Meow不是 一个访问函数。//请问这里的Meow为什么不是一个访问函数???
它不能获取或设置成员变量的值;它执该类的另一项职能--打印单词“Meow”。第19 20行声明了成员变量本身。
2004-06-07 23:11
这里两个成员变量是私有的外界无法访问 只有用
一个成员函数把他们的值返回(unsigned int GetWeight();)
和一个成员函数设置他们的值 (void SetWeight(unsigned int Weight);) 其他的同理
因为这个Meow()函数 只看名字就知道是一个动作的函数 (猫叫) 所以不是访问函数
[此贴子已经被作者于2004-06-08 09:48:57编辑过]
2004-06-08 09:45
ok
谢谢我明白了!
2004-06-08 10:07
2009-08-04 21:56