重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includeiostream
10余年的西乡塘网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整西乡塘建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“西乡塘网站设计”,“西乡塘网站推广”以来,每个客户项目都认真落实执行。
using namespace std;
class X
{
int x; //定义类X的私有实例成员变量x
public:
X() {x=0;} //默认构造函数(无参数),将x初始化为0
X(int xx) {x=xx;} //重载的构造函数,将x初始化为xx
//虚函数,输出x的值,子类可以覆盖(重写)虚函数,从而实现多态
virtual void prt() {coutx;}
};
//类Y公共继承自类X,即Y是X的子类
class Y:public X
{
int y; //定义类Y的私有实例成员变量y
public:
//以下两行都是类Y的构造函数,它们都隐式调用了父类X
//的默认构造函数,以初始化父类的实例成员变量x(都初始化成0了)
Y() {y=0;}
Y(int yy) {y=yy;}
//这是覆盖(重写)父类的虚函数prt
void prt() {couty;}
};
int main()
{
//x(10)会调用带一个参数的构造函数X(int xx),创建一个类X的对象x,
//x的成员变量x初始化为10
//z会调用默认构造函数X(),创建一个类X的对象z,
//z的成员变量x初始化为0
//y(11)会调用带一个参数的构造函数Y(int yy)(Y的),创建一个类Y的对象y,
//y的成员变量y初始化为11,同时通过调用父类X的默认构造函数,
//将父类的成员变量x初始化为0
X x(10),z;Y y(11);
//将x赋给z,调用z的成员函数prt,输出显示10
z=x;z.prt();
//将y赋给z,调用z的成员函数prt,输出显示0,
//因为调用的是父类X的prt,显示的是对象z的成员变量x的值
z=y;z.prt();
//以下新加的会输出显示11,
//因为调用的是子类Y的prt,显示的是对象y的成员变量y的值
y.prt();
coutendl;
system("PAUSE");
return EXIT_SUCCESS;
}
1、C语言里没有class函数的概念,class是C++中的关键字。
2、C++是基于C的一种面向对象扩展,它在C原有结构体(struct)的基础上,扩充了struct的功能(增加了成员函数,以及访问控制,继承等),并增加了class这一新定义。实际上class和struct的唯一区别就是:struct中的默认访问控制权限是public,而class的默认访问控制权限是private。
struct RecTangle{
int width; int height;
int pos_x; int pos_y;
};
给他添加一些成员函数
struct RecTangle{
int width; int height;
int pos_x; int pos_y;
int Right(); // get right
int Bottom(); // get bottom
int Left(); // get left
int Top(); // get top
};
为了隐藏结构体内的成员,添加访问控制标识:
struct RecTangle{
private:
int width; int height;
int pos_x; int pos_y;
public:
int Right(); // get right
int Bottom(); // get bottom
int Left(); // get left
int Top(); // get top
};
如果用class来代替struct,则需要添加访问控制标识.
比如用class来定义类C结构体
class RecTangle{
public:
int width; int height;
int pos_x; int pos_y;
};
C++中的class是C++不同于C的关键所在;
是面向对象中声明的类;
类是一组数据和对这些数据的操作(函数)的封装;
类中还可有访问的权限的控制
其中private只能由本类中的成员函数访问;
public可以由类外的成员函数访问;
protected是受保护的数据成员,在他的子类中(从此类继承产生的类)protected相当于private也就是其子类的成员函数可以访问,而其他的类中的成员函数不能访问;
struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。
struct没有继承,没有封装,要说封装只有初步封装。而class把数据,接口可以以三种类型封装,private,public,protected;还可以继承和派生。
它们都可以提供自己的接口函数,构造函数。一个类可以由结构继承而来。struct只能叫做数据的集合,外部可以任意访问,但是类就完成了封装,维护了数据安全,这就是面向对象的理念。
class里可以定义私有成员和保护成员而结构体里所有的成员,均为公用成员
struct想用{}来赋初值,它也必须满足很多的约束条件,这些条件实际上就是让struct更体现出一种数据机构而不是类的特性。那为什么在上面仅仅将struct改成class,{}就不能用了呢?其实问题恰巧是之前所讲的——访问控制!如果将struct改成class的时候,访问控制由public变为private了,那当然就不能用{}来赋初值了。加上一个public,class也是能用{}的,和struct毫无区别。
从上面的区别,可以看出,struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。
C语言里没有class,class是C++里的关键字,类。
你可以跟struct做对比,class默认成员是private的,而struct默认是public。