❶ C 中什么是类
类是 面向对象程序设计语言中的一个概念。
程序设计中类的含义
[一个简单的类图]
一个简单的类图
类(Class)实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。
类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。
可以把类看作“理论上”的对象,也就是说,它为对象提供蓝图,但在内存中并不存在。从这个蓝图可以创建任何数量的对象。从类创建的所有对象都有相同的成员:属性、方法和事件。但是,每个对象都象一个独立的实体一样动作。例如,一个对象的属性可以设置成与同类型的其他对象不同的值。
类定义的一般形式
class Name {
public:
类的公有接口
[MFC类图]
MFC类图
private:
私有的成员函数
私有的数据成员定义
};
类的定义由 类头 和 类体 两部分组成。类头由关键字 Class 开头,然后是类名,其命名规则与一般标识符的命名规则一致。类体包括所有的细节,并放在一对花括号中。类的定义也是一个语句,所以要有分号结尾,否则会产生编译错误。
类体定义类的成员,它支持两种类型的成员:
(1)数据成员,它们指定了该类对象的内部表示。
(2)成员函数,他们指定了该类的操作。
类成员有3种不同的访问权限:
(1)公有( public )成员可以在类外访问。
(2)私有( private )成员只能被该类的成员函数访问。
(3)保护( protected )成员只能被该类的成员函数或派生类的成员函数访问。
数据成员通常是私有的,成员函数通常有一部分是公有的,一部分是私有的。公有的函数可以在类外被访问,也称之为类的接口。可以为各个数据成员和成员函数指定合适的访问权限。
Microsoft Visual Basic for Applications (VBA) 工程中可包含两种不同类型的类模块:没有任何一种与其关联的用户界面的基本类模块;与窗体或其它组件关联的类模块。例如,与窗体相关联的类模块,它们和基本类模块相同,只是它们只有在那个窗体存在于内存中时,才存在于内存中。拥有相关联的类模块的对象的示例是“用户窗体”、Microsoft Access 窗体和报表、Microsoft Word 的 ThisDocument 对象,Microsoft Excel 的 ThisWorkbook 和 SheetN 对象。
❷ Java里“类”和“对象”定义分别是什么我学过c语言,可以用里面的东西解释。
对象是类的实体
比如你大脑中的汽车 这只是个概念,这个概念相当于类
而真正的一辆桑塔纳汽车就是一个对象 是车这个概念的实体
不知道你打不打游戏,比如游戏里所说的某个兵种就是类,造出来的兵就是对象,类只是具有某些共性的实体所总结出的概念。
C语言中的struct(结构体)的概念就类似于JAVA的类
❸ c++类与对象
C++类的定义:
类是定义同一类所有对象的变量和方法的蓝图或原型。
类也可以定义类变量和类方法。可以从类的实例中或者直接从类中访问类变量和方法。类方法只能操作类变量,不必访问实例变量或实例方法。系统在第一次在程序中遇到一个类时为这个类建立它的所有类变量的拷贝,这个类的所有实例共享它的类变量。
C++对象的定义:
定义一个类就相当于创建了一个新的class类型。要使用类,还必须用已经定义的类去说明它的实例变量(即对象)。在C++中,class类型一旦被定义,它的实例变量(对象)就能被创建,并初始化,且能定义指针变量指向它。实例化的类就是对象。
类和对象其实是C语言里的结构体的延伸,在C++里,struct 和 class其实本质上是一样的,唯一区别就是struct默认是公开的,class默认是私有的,公开时需要声明为public;还有就是C语言里的结构体,不能包含函数和继承,C++可以包含函数以及继承其他的类。
❹ c++中的类和类的对象是什么意思
类是把函数和一些成员数据放在一起,类似于结构体struct。
声明格式是 class+类名 { 数据成员 +成员函数 } 。 class 是必须的关键词。
对象就是把 “类” 实例化 ,也类似于结构体变量的声明,它的创建格式是 类名+对象名,比如有一个已经定义的类 A ,可以这样把A实例化 A a ; a就是你创建的对象。只有创建了对象,类才能发挥作用。
❺ C语言中定义数据对象或类型的关键字是什么
typedef 类型名 替换的类型名;
class 定义一个类。
struct 定义一个结构。
❻ c语言描述类 对象 方法 属性四者之间区别与联系
对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例化,ASP中set
classname=new
classd()
就是实例化一个类;
对象有它的属性和方法,举例说明,人是一个对象,人的长相和身材就是对象的属性,而说话动作就是对象的方法。
对象的属性也可能是一组集合,举例说明:人这个对象的外表属性包含:长相,身高,体形,气质等。
❼ c++中类和对象的关系
C++中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。
类是把函数和一些成员数据放在一起,类似于结构体struct。
声明格式是 class+类名{ 数据成员 +成员函数 } class 是必须的关键词
对象就是把 “类” 实例化 ,也类似于结构体变量的声明,它的创建格式是 类名+对象名,比如有一个已经定义的类 A ,可以这样把A实例化 A a ; a就是你创建的对象。只有创建了对象,类才能发挥作用。
(7)c语言中对象与类的定义扩展阅读:
类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。
类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
❽ c++的类和对象
类是具有相同属性和相同的方法的对象的集合,它是一种既包含数据又包含函数的抽象数据类型。
对象是类进行实体化后的产物,是一个实体。
在C++中也是先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。类是抽象的,不占用内存,而对象是具体的,占用存储空间。 类是用户自己指定的类型。如果程序中要用到类类型,必须自己根据需要进行声明,或者使用别人已设计好的类。C++标准本身并不提供现成的类的名称、结构和内容。
在C++中声明一个类的类型和声明一个结构体类型是相似的。下面是声明一个结构体类型的方法: structStudent//声明了一个名为Student的结构体类型{intnum;charname[20];charsex;};Studentstud1,stud2;//定义了两个结构体变量stud1和stud2,它只包括数据,没有包括操作声明一个类: classStudent//以class开头{intnum;charname[20];charsex;//以上3行是数据成员voiddisplay()//这是成员函数{cout<<″num:″<<num<<endl;cout<<″name:″<<name<<endl;cout<<″sex:″<<sex<<endl;};//以上4行是函数中的操作语句};Studentstud,stud1;//定义了两个对象stud和stud1事实上,也可以用struct关键字来声明一个类。这样的类中默认所有成员的权限都是public(除非你特别写上权限),而用class声明的类中默认所有成员的权限都是private.
可以看到声明类的方法是由声明结构体类型的方法发展而来的,类就是对象的类型。实际上,类是一种广义的数据类型。类这种数据类型中的数据既包含数据,也包含操作数据的函数。
不能把类中的全部成员与外界隔离,一般是把数据隐蔽起来,而把成员函数作为对外界的接口。可以将上面类的声明改为 classStudent//以class开头{private://声明私有成员intnum;charname[20];charsex;public://声明公共成员voiddisplay(){cout<<″num:″<<num<<endl;cout<<″name:″<<name<<endl;cout<<″sex:″<<sex<<endl;}};Studentstud1,stud2;//定义了两个对象stud1和stud2如果在类的定义中既不指定private,也不指定public,则系统就默认为是私有的。归纳以上对类类型的声明,可得到其一般形式如下: class类名{private://私有的数据和成员函数;public://公用的数据和成员函数;};private和public称为成员访问限定符(member access specifier)。除了private和public之外,还有一种成员访问限定符protected(受保护的),用protected声明的成员称为受保护的成员,它不能被类外访问(这点与私有成员类似),但可以被派生类的成员函数访问。
在声明类类型时,声明为private的成员和声明为public的成员的次序任意,既可以先出现private部分,也可以先出现public部分。
在一个类体中,关键字private和public可以分别出现多次。每个部分的有效范围到出现另一个访问限定符或类体结束时(最后一个右花括号)为止。但是为了使程序清晰,应该养成这样的习惯: 使每一种成员访问限定符在类定义体中只出现一次。
C++ 程序多数先写public部分,把private部分放在类体的后部。这样可以使用户将注意力集中在能被外界调用的成员上,使阅读者的思路更清晰一些。
在C++程序中,经常可以看到类。为了用户方便,常用的C++编译系统往往向用户提供类库(但不属于C++语言的组成部分),内装常用的基本的类,供用户使用。不少用户也把自己或本单位经常用到的类放在一个专门的类库中,需要用时直接调用,这样就减少了程序设计的工作量。 上述程序段中,最后一行用已声明的Student类来定义对象,这种方法是很容易理解的。经过定义后,stud1和stud2就成为具有Student类特征的对象。stud1和stud2这两个对象都分别包括Student类中定义的数据和函数。
定义对象也可以有以下几种方法:
1.先声明类类型,然后再定义对象前面用的就是这种方法,如Student stud1,stud2;//Student是已经声明的类类型在C++中,声明了类类型后,定义对象有两种形式。
(1)class 类名 对象名
如: class Student stud1,stud2;
把class和Student合起来作为一个类名,用来定义对象。
(2)类名 对象名
如: Student stud1,stud2;
直接用类名定义对象。
这两种方法是等效的。第1种方法是从C语言继承下来的,第2种方法是C++的特色,显然第2种方法更为简捷方便。
2.在声明类类型的同时定义对象 classStudent{//声明类类型public://先声明公用部分voiddisplay(){cout<<″num:″<<num<<endl;cout<<″name:″<<name<<endl;cout<<″sex:″<<sex<<endl;}private://后声明私有部分intnum;charname[20];charsex;}stud1,stud2;//定义了两个Student类的对象在定义Student类的同时,定义了两个Student 类的对象。
3.不出现类名,直接定义对象 class//无类名{private://声明以下部分为私有的//...public://声明以下部分为公用的//...}stud1,stud2;//定义了两个无类名的类对象直接定义对象,在C++中是合法的、允许的,但却很少用,也不提倡用。在实际的程序开发中,一般都采用上面3种方法中的第1种方法。在小型程序中或所声明的类只用于本程序时,也可以用第2种方法。在定义一个对象时,编译系统会为这个对象分配存储空间,以存放对象中的成员。
❾ C语言中的类是什么意思啊
C语言中+=是复合赋值运算符。复合赋值运算符就是在简单赋值符“=”之前加上其它运算符构成,例如+=、-=、*=、/=、%=。
即:a+=1;等价于a=a+1。+=的意思就是把左边的第一个符号移到右边,其实就是b=b+c的意思。直接把b+=c的b+移到右边,将b的值取出再取出c的值,相加然后赋给b,存储在b开辟的内存空间中,类似的还有,b-=c、b*=c都是这个意思。
这么写可以让执行优化,寻址a的地址一次即可,否则需要两次对a进行寻址。然而cpu的突飞猛进让这个优化在几十年前已经没有实际价值了,保留下来无非是因为语法兼容和程序员习惯。
(9)c语言中对象与类的定义扩展阅读
C语言中运算符号种类
1、算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4、位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5、赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6、条件运算符
这是一个三目运算符,用于条件求值(?:)。
7、逗号运算符
用于把若干表达式组合成一个表达式(,)。
8、指针运算符
用于取内容(*)和取地址(&)二种运算。
9、求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
10、特殊运算符
有括号(),下标[],成员(→,.)等几种。
❿ 怎样理解c++中的类和对象
面向对象是一种编程的方式..
就如同你思考问题的方式一样,是一种规则,方法..
好比 C语言的面向过程一样,它的着中点在于问题解决的过程,先干什么,接着干什么,最后干什么..比较明显的过程式,汇编更是面向对象编程的鼻祖..所以,它们很适合编写,像操作系统,嵌入式等这些与硬件亲近,且基本上不需要对程序进行较大修改的程序,用过程式就比较高效了.
而面向对象呢,它就不同于面向对象了,它的着重点在于,怎样表示程序中的对象,这样的程序很适合编写一些像游戏,ERP,等等这样的应用性软件.
举个例子..要写一段程序模拟大自然创造世界的程序:
如果,是过程式的编写方式,首先,创造宇宙,然后从宇宙的某个点开始,创造星系,将全部星系创造完毕,星系创造完毕,又从某个星系,开始创造该星系所有的子星系,完成后创造该星系中的其他子星系,将所有星系中的所有子星系全部创建完成之后,就开始在从整个宇宙中的某个星系中的子星系的某个星球开始,建立完整的生态体系,用地球做比喻,首先,建立细菌系,然后将细菌系分裂成动物,植物系列,动物系列,进行几何式分裂,形成几亿种生命形态..依次为宇宙中的每个星球建立生态体系,完毕之后,宇宙的过程式创造就完毕了..这种方式有个明显的不足的地方就是,当你在整个宇宙,创造完毕之后要加入一个新的星系,那对与程序员来说那将是灾难性的,而且,可扩展性极差..
再看看面向对象:
首先为宇宙中的基本对象建模,宇宙这个结构中半包含的成员
class 宇宙
{
class* 大星系;
class 宇宙真空空间;
public:
//宇宙能进行的动作
宇宙();
宇宙(宇宙& a); //复制宇宙..
void operator=(宇宙& a); //复制宇宙.
~宇宙(); //自动销毁宇宙..
void 增加星系(unsigned int 新增星系编号);
void 销毁星系(unsigned int 已有星系编号);
...
...
... //等等操作
};
class 银河系:public 大星系
{
};
class 太阳系:public 银河系
{
class 地球;
class 火星;
...
};
class 地球
{
class 动物;
class 植物;
class 地球的状态;
};
class 地球的状态
{
class 陆地;
class 海洋;
...
};
class 陆地
{
class 亚洲;
class 欧洲;
...
}
class 亚洲
{
class 中国;
class 印度;
class 蒙古;
...
};
class 中国
{
class 省区[31];
}
class 省区
{
class 市区;
...
};
class 市区;
{
string 省名;
int 人口;
double 面积;
...
}
将宇宙中所有这些对象建模之后,只需生成一个宇宙对象,咋们的宇宙不就生成了..而且你要加入新的星系,或者毁灭某个星系不就轻而易举,或者要在宇宙某个地方复制个地球,那还会有什么难呢?
但并不是说面向对象的编程方式就能完全没有过程式编程,那是不可能,好比,你把车子的所有部分造好了,你不组装起来,它又怎么可能开得起来呢,其实C语言中同样有面向对象,struct 就是C语言的对象组织方式,只不过再C++中它得到了飞升..
这两种编程的方式也没有 谁强谁弱的说法,如果,用Java去编写操作系统,无异于 用诸葛亮去单条吕布..反之,用汇编去编写网络游戏,无异与让张飞去考取状元,术业有专攻..