1楼:育知同创教育
c中结构体和类的最大区别是结构体不能定义成员函数。
c++中结构体是可以定义成员函数的,所以c++中结构体和类基本是一样,唯一的不同点在于,结构体中缺省权限是public,类中缺省权限是private。即如果你在结构体和类中没有写public等的时候,结构体默认为public,类中默认为private。
c++中struct和class的区别
2楼:育知同创教育
1、默认的继承访问权限。struct是public的,class是private的。比如如下的**:
struct a
;struct b : a
;这个时候b是public继承a的。如果都将上面的struct改成class,那么b是private继承a的。这就是默认的继承访问权限。所以在平时写类继承的时候,通常会这样写:
struct b : public a
就是为了指明是public继承,而不是用默认的private继承。当然,到底默认是public继承还是private继承,取决于子类而不是基类。我的意思是,struct可以继承class,同样class也可以继承struct,那么默认的继承访问权限是看子类到底是用的struct还是class。
如下:struct a{};
class b : a{}; //private继承
struct c : b{}; //public继承
2、struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的。
3、class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。
4、还是上面所说的,c++中的struct是对c中的struct的扩充,既然是扩充,那么它就要兼容过去c中struct应有的所有特性。例如你可以这样写:
struct a //定义一个struct
;a a=; //定义时直接赋值
也就是说struct可以在定义的时候用{}赋初值。
如上面的struct中加入一个构造函数,struct也不能用{}赋初值了。以{}的方式来赋初值,只是用一个初始化列表来对数据进行按顺序的初始化,如上面如果写成a a=;则c1,n2被初始化,而db3没有。这样简单的copy操作,只能发生在简单的数据结构上,而不应该放在对象上。
加入一个构造函数或是一个虚函数会使struct更体现出一种对象的特性,而使此{}操作不再有效。事实上,是因为加入这样的函数,使得类的内部结构发生了变化。
到这里,可以发现即使是struct想用{}来赋初值,它也必须满足很多的约束条件,这些条件实际上就是让struct更体现出一种数据机构而不是类的特性。那为什么在上面仅仅将struct改成class,{}就不能用了呢?其实问题恰巧是之前所讲的——访问控制!
如果将struct改成class的时候,访问控制由public变为private了,那当然就不能用{}来赋初值了。加上一个public,你会发现,class也是能用{}的,和struct毫无区别!
从上面的区别,可以看出,struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。
class和struct的区别
3楼:匿名用户
struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。
struct没有继承,没有封装,要说封装只有初步封装。而class把数据,接口可以以三种类型封装,private,public,protected;还可以继承和派生。
它们都可以提供自己的接口函数,构造函数。一个类可以由结构继承而来。struct只能叫做数据的集合,外部可以任意访问,但是类就完成了封装,维护了数据安全,这就是面向对象的理念。
class里可以定义私有成员和保护成员而结构体里所有的成员,均为公用成员
struct想用{}来赋初值,它也必须满足很多的约束条件,这些条件实际上就是让struct更体现出一种数据机构而不是类的特性。那为什么在上面仅仅将struct改成class,{}就不能用了呢?其实问题恰巧是之前所讲的——访问控制!
如果将struct改成class的时候,访问控制由public变为private了,那当然就不能用{}来赋初值了。加上一个public,class也是能用{}的,和struct毫无区别。
从上面的区别,可以看出,struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。
4楼:千锋教育
1、class是引用类型,struct是值类型;
2、class可以继承类、接口和被继承,struct只能继承接口,不能被继承;
3、class有默认的无参构造函数,有析构函数,struct没有默认的无参构造函数,且只能声明有参的构造函数,没有析构函数;
4、class可以使用abstract和sealed,有protected修饰符,struct不可以用abstract和sealed,没有protected修饰符;
5、class必须使用new初始化,结构可以不用new初始化;
6、class实例由垃圾**机制来保证内存的**处理,而struct变量使用完后立即自动解除内存分配;
7、从职能观点来看,class表现为行为,而struct常用于存储数据;
8、作为参数传递时,class变量以按址方式传递,而struct变量是以按值方式传递的。
5楼:傻缺小宅
struct是内部所有成员变量与函数都为public类型的class
6楼:匿名用户
c中结构体和类的最大区别是结构体不能定义成员函数。
c++中结构体是可以定义成员函数的,所以c++中结构体和类基本是一样,唯一的不同点在于,结构体中缺省权限是public,类中缺省权限是private。即如果你在结构体和类中没有写public等的时候,结构体默认为public,类中默认为private。
css中id和class的区别
7楼:轻颦浅笑灬
css中“.”是类选择器的标识“#”是id选择器的标识 举个例子:html中
给该div添加样式,有两种方法:①直接在css文件中定义id选择器#div1{}②在css定义
类选择器.class1{},然后
指明他的类样式
两种方法的效果是一样的,但是id只能给一个元素指明类样式,而class可以在任一元素中定义它的样式
8楼:匿名用户
id 是 标签的主键
class 是引用样式用的
javascript中的class=tar与class=tal什么区别
9楼:育知同创教育
赋予的值不同
就是这个意思
就是key相同,但值不同
c++中的class和object是什麼意思?
10楼:千锋教育
c++类的定义抄:
类是定义同一类所有对象的变量和方法的蓝图或原型。
类也可以定义类变量和类方法。可以从类的实例中或者直接从类中访问类变量和方法。类方法只能操作类变量,不必访问实例变量或实例方法。
系统在第一次在程序中遇到一个类时为这个类建立它的所有类变量的拷贝,这个类的所有实例共享它的类变量。
c++对象的定义:
定义一个类就相当于创建了一个新的class类型。要使用类,还必须用已经定义的类去说明它的实例变量(即对象)。在c++中,class类型一旦被定义,它的实例变量(对象)就能被创建,并初始化,且能定义指针变量指向它。
实例化的类就是对象。
类和对象其实是c语言里的结构体的延伸,在c++里,struct 和 class其实本质上是一样的,唯一区别就是struct默认是公开的,class默认是私有的,公开时需要声明为public;还有就是c语言里的结构体,不能包含函数和继承,c++可以包含函数以及继承其他的类。
11楼:刘文正粉丝
class是一个类, 类是复一个抽象
制的东西, 它不是bai一个物体, 它相当于du是一个蓝图. 然后根据蓝图创zhi
建出来dao的物品就是object.
class和object有一定的关系:
class c;
c object;
这里, c就是一个类, 而object就是一个对象.
c是一个类名, 而object就是一个对象名.
12楼:匿名用户
class:类
object:对象
C++中delete和delete的区别
1楼 du知道君 你是不是问 delete 和 delete 的区别 一个是释放单个物体 比如 class a a p new a 一个是释放物体数组 a p new a 50 delete a c 中delete和delete的区别 2楼 育知同创教育 delete or delete 问题没说清...
C++中delete和delete的区别
1楼 千锋教育 主要差别是 是否调用析构函数 delete data 会自动调用data数组每个元素的析构函数 delete data则不会 2楼 匿名用户 没区别!!!你确定你问题问的对? c 中delete和delete的区别 3楼 育知同创教育 delete or delete 问题没说清楚啊...
C++中a的区别,C++中&a[0]与a[0] 的区别?
1楼 幻想秘境 a 0 是获取a这个数组第0个元素的值 a 0 是获取a这个数组第0个元素的地址 比如把数组比作一个小区 a 0 就是代表小区里某栋房子本身 而 a 0 则表示某栋房子的门牌号 你知道了门牌号 并且知道它在a小区 那么你就能找到这栋房子 望采纳 2楼 匿名用户 a 0 输出的是一个地...