网站首页 > 资源文章 正文
定义C++类对象的方法
我们学习了类的定义,与C语言的struct结构体类型定义差不多。那么,C语言可以使用struct结构体类型来定义对象,那么,C++同样可以使用类来定义对象。
C++使用类来定义对象也可以有几种方法。
(1) 先声明类类型,然后再定义对象
例如:
//定义student类;
class student //以class 开头
{
public:
//定义成员变量
char name[32]; //姓名
char addr[32]; //家庭地址
long long number; //电话号码
public:
//定义成员函数
void print() //输出成员的信息
{
cout << "name = " << name << endl;
cout << "addr = " << addr << endl;
cout << "number = " << number << endl;
}
};
student stud1, stud2; //定义了两个student类的对象stud1和stud2
可以看到,定义了一个student类,然后,使用student类来定义了stud1和stud2这两个对象。
在C++中,在声明了类类型后,定义对象有两种形式。
(A) class 类名 对象名
例如:
class student stud1, stud2;
把class和student合起来作为一个类名,用来定义对象。如同C语言的struct结构体类型一样,需要携带 struct 关键字来定义结构体对象。
(B) 类名 对象名
例如:
student stud1, stud2;
直接用类名定义对象,这两种方法是等效的。第一种方法是从C语言继承下来的,第二种方法是C++的特色,显然第二种方法更为简洁、方便。
如果是定义指针类型的对象,定义方法如同C语言的struct结构体一样。如下:
类名* 指针对象名;
通过指针运算符“*”来定义一个指针对象。
(2) 在声明类类型的同时定义对象
在定义class类的时候,在定义类的末尾,定义类对象。
//定义student类;
class student //以class 开头
{
public: //定义成员变量
char name[32]; //姓名
char addr[32]; //家庭地址
long long number; //电话号码
public: //定义成员函数
void print() //输出成员的信息
{
cout << "name = " << name << endl;
cout << "addr = " << addr << endl;
cout << "number = " << number << endl;
}
} stud1, stud2; //定义了两个student类的对象stud1和stud2
可以看到,在定义student类的末尾,定义了stud1和stud2对象。这种方式,C语言的struct类型也支持。
(3) 定义匿名类,不出现类名,直接定义对象
在定义类的时候,在class关键字后面,没有定义类名。如下:
class //没有类名
{
public: //定义成员变量
char name[32]; //姓名
char addr[32]; //家庭地址
long long number; //电话号码
public: //定义成员函数
void print() //输出成员的信息
{
cout << "name = " << name << endl;
cout << "addr = " << addr << endl;
cout << "number = " << number << endl;
}
} stud1, stud2; //定义了两个类的对象stud1和stud2
此时,定义一个匿名类。就是没有类名的类。定义匿名类的同时,定义匿名类对象。
定义匿名类,在C++中是合法的,允许的,但却很少用,也不提倡用。因为在面向对象程序设计和C++程序中,类的声明和类的使用是分开的,类并不只为一个程序服务,人们常把一些常用的功能封装成类,并放在类库中。因此,在实际的程序开发中,一般都采用上面3种方法中的第一种方法。在小型程序中或所声明的类只用于本程序时,也可以用第二种方法。
在定义一个对象的时候,编译系统会为这个对象分配存储空间,用来存放对象中的成员。
- 上一篇: C语言随机数生成
- 下一篇: OLED弧面显示屏VR问世 Void游戏公园团战指日可待
猜你喜欢
- 2025-01-12 恶意代码常见的编程方式
- 2025-01-12 LPL:上野不变,中下换人!LNG 2025年阵容组建完毕
- 2025-01-12 实现多态必须满足什么条件
- 2025-01-12 西门子S7-300 SCL编程笔记(附实例)
- 2025-01-12 OLED弧面显示屏VR问世 Void游戏公园团战指日可待
- 2025-01-12 C语言随机数生成
- 2025-01-12 UCGVR主题公园“The Void”宣传影像(内含Gif)
- 2025-01-12 《Void Path》10月30日登陆Steam 日恐诡异探索
- 2025-01-12 西门子S7-1200/1500PLC的程序组成之FC的应用技巧
- 2025-01-12 The VOID开放测试体验,名额被抢购一空
你 发表评论:
欢迎- 05-1430个在线地图瓦片URL分享
- 05-1425个在线地图瓦片URL分享
- 05-14PixelStyle for Mac(mac照片编辑器)
- 05-14一篇文章带你了解CSS3 3D 转换知识
- 05-14我们的世界是假的?马斯克:我们生活在高文明模拟的矩阵游戏中
- 05-14【视觉AI的基石】斯坦福大学笔记!带你吃透卷积神经网络 (CNN)
- 05-14潮流 | 通过AAPE的新价目,无虑入荷未来主义服饰
- 05-14身份证查询服务API:准确识别身份证信息
- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)