C++里没属性?
我以前写VB的,在VB里,拖个控件到窗体里,敲这个
控件的名字比如txtname.
会弹出那那啥列表,里面有这个控件的方法也有属性。而在
VC里,得到的列表里好象只有方法(列表里内容太多,是不是100%都是方法?)。
C++教程里好象说,不要用属性,全用方法做接口。是不是这就是
“封装”?
问题点数:50、回复次数:11Top
1 楼x2jack(捷可)回复于 2003-05-04 00:09:31 得分 0
方法就是行为,属性就是它的数据成员。只是在不同的语言中有不同的叫法。Top
2 楼kangde(无酒而醉谓之青春)回复于 2003-05-04 00:10:12 得分 0
VC生成的类中的方法,有一些就是用来设置你在VB中的属性的,这些方法的名字大都是Set*,Get*,而你说的VB中的方法,在VC中仍然用原来的名字。一般是这样。Top
3 楼manonroad(唧唧嘎嘎)回复于 2003-05-04 07:03:32 得分 0
从这个角度来说,vb比c++用起来更舒服。本质上并无区别,我认为vb中的属性是属于function的一种特殊形式,他把get 和set 藏在属性中,这样可以直接来对object的属性赋值或者取值。而在c++中,则用get 和 set等函数来实现。
在vb中数据成员还需另外定义,属性是外部对他们操作的借口。
Top
4 楼qcrsoft(网痞)回复于 2003-05-07 10:20:14 得分 0
是啊是啊,我明白属性和数据成员的关系。我是说,我看VC书里好象不提倡使用public的数据成员对吧?好象提倡用private的数据成员,然后通过public的成员函数get或者set成员变量,对吧?Top
5 楼Meyer(断水)回复于 2003-05-07 10:51:46 得分 0
我还以为你用C#用疯了,到C++中来找属性呢 :)
Top
6 楼Meyer(断水)回复于 2003-05-07 10:53:04 得分 0
>>好象提倡用private的数据成员,然后通过public的成员函数get或者set成员变量,对吧?
yes
Top
7 楼fatalerror99(iTePub's Nirvana)回复于 2003-05-07 11:00:24 得分 40
在 C++ 中,数据成员一般都是 private 的,用方法来更改数据成员,这样有利于在更改类的实现时,保持接口的一致,避免对客户代码造成影响。
这确实就是面向对象三大特性的“封装”,另两个是“继承”和“多态”。Top
8 楼diabloqin(光光)回复于 2003-05-07 13:05:04 得分 0
upTop
9 楼shornmao(毛豆子[死猫])回复于 2003-05-07 13:16:49 得分 10
VB中的属性其实并不等效为C++中的类数据成员,由于在写属性值时往往伴随着其他副作用,例如更改控件的位置属性会导致控件自动刷新,因此VB中的属性和C++中的替身类成员更接近。
Borland C++ Builder为此进行编译器扩展,增加了__property关键字,达到类似效果,从程序库的方面也有类似的解决方案,CSDN的文档中心有这样一篇文章,请参阅
http://www.csdn.net/develop/Read_Article.asp?Id=18113Top




