一、什么是struct
在C++中,struct是一种用于定义自定义数据类型的关键字,它可以将不同类型的数据组合起来,形成一个新的数据类型。通常情况下,struct可以包含成员变量和成员函数。
二、如何定义一个struct
struct Person { std::string name; int age; double score; };
上面的代码定义了一个名为Person的struct,它包含3个成员变量:name,age和score。其中,name是字符串类型,age和score分别是整型和双精度浮点型。
三、如何使用struct
结构体变量的定义方式与其他基本类型变量的定义方式相同。
Person p1; // 定义Person结构体的变量p1
而且可以使用.(点)运算符来访问结构体中的成员变量。
p1.name = "张三"; p1.age = 18; p1.score = 90.5; std::cout << p1.name << "今年" << p1.age << "岁,考了" << p1.score << "分。" << std::endl;
上述代码就是给p1的成员变量赋值,并且输出了这些值。
四、struct可以实现面向对象编程
虽然C++中有class关键字,但是struct也可以实现面向对象编程的功能。我们可以在struct中定义成员函数,从而实现封装、继承和多态等面向对象编程的概念。
struct Person { std::string name; int age; double score; double getScore() { return score; } }; struct Student : public Person { std::string school; std::string getSchool() { return school; } }; int main() { Student s1{"张三", 18, 90.5, "清华大学"}; std::cout << s1.name << "今年" << s1.age << "岁,在" << s1.getSchool() << "读书,考了" << s1.getScore() << "分。" << std::endl; return 0; }
在上述代码中,我们在Person结构体中定义了getScore()函数,接着在Student结构体中用public继承了Person,再定义了getSchool()函数(本来可以把这个函数写在父类中的),最后在main函数中实例化一个学生对象s1,并调用了它的getScore()和getSchool()函数。
五、结语
C++中的struct可以很方便地用来定义自定义数据类型,同时也可以实现面向对象编程的功能。掌握这一特性,可以让我们更好地完成一些复杂的编程任务,提高了编程的效率。