前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

C++如何定义类对象?有哪几种方式?linux C++第17讲

qiguaw 2025-01-12 17:55:32 资源文章 31 ℃ 0 评论

定义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种方法中的第一种方法。在小型程序中或所声明的类只用于本程序时,也可以用第二种方法。

在定义一个对象的时候,编译系统会为这个对象分配存储空间,用来存放对象中的成员。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表