简介:
在C++中,结构体和类是用于组织相关数据和函数的用户自定义数据类型。本文将对结构体和类的定义、区别以及使用进行简介。
一、结构体和类的定义:
1. 结构体(struct):
结构体是C语言中的概念,在C++中也得到了保留和扩展。结构体用于组织多个不同类型的数据成员,可以包含成员变量和成员函数。结构体中的成员变量和成员函数默认为公有(public)属性。
struct student//结构 { public://结构成员缺省都有public的属性,所以可以不加public。 private://结构外的东西不能被访问,只能在结构中调用 char name[100]; int numbers; public://可以在一个结构中定义 多个 公有私有的public和private void a()//成员函数(方法) { numbers++; return; } };
一、结构回顾: 结构:自定义的类型数据 student student1;//定义结构变量,这里可以省略struct,之间用结构名student。 student1.numbers = 1001; strcpy_s(student1.name, sizeof(student1.name), "zhangsan"); cout << student1.numbers << endl; cout << student1.name << endl; func(& student1);//效率低,因为实参传递给形参值要拷贝。在形参加上引用&可以解决改变值的问题。 cout << student1.name << endl;//这个值没有被函数改变 cout << student1.numbers << endl;//值没有被函数改变、
2. C++中的结构和C语言的区别:
C++中具备C语言的所有功能外,还增加了了很多功能,其中最突出的扩展功能之一就是:
c++中的结构不仅仅有成员变量,还可以在其中定义成员函数(方法)
调用方法:student1.a();调用成员函数(方法)
3. 类(class):
类是C++中引入的概念,用于组织多个数据成员和成员函数。类中的成员变量和成员函数默认为私有(private)属性。类提供了更多的面向对象特性,如封装、继承和多态。
public和private权限修饰符:public(公有),private(私有)
(1)public:公有的意思,用这个修饰符修饰 结构/类中的成员变量/成员函数,就可以被外界访问。
一般来讲能被外界访问的函数,就定义为public,就好像是该类的外部接口一样
(2)private:私有的意思,用这个修饰符修饰 结构/类中的成员变量/成员函数,只有被内部定义的成员函数才能被使用
二、结构体和类的区别:
1. 默认访问级别:
结构体中的成员变量和成员函数默认为公有属性,而类中的成员变量和成员函数默认为私有属性。在定义时,建议明确指定访问级别,统一加上public和private修饰符。
2. 继承默认访问级别:
在C++中,结构体的继承默认为public,而类的继承默认为private。这意味着通过结构体继承的成员在子类中仍然是公有的,而通过类继承的成员在子类中则变为私有的。
3。总结:
(1)类这个东西,只有在C++中才有这个概念,C语言中没有这个概念
(2)结构用struct定义,类用class定义
在C语言中,我们定义一个属于结构的变量,我们叫结构变量。
在C++中,我们定义了一个属于该类的变量,我们叫对象。
说白了 结构变量 也好 对象 也好,他们都是一块能够储存数据并且具有某种类型的内存空间。
(3)C++中结构和类极其相似,区别有两点
1、C+++ 结构 内部的成员变量以及成员函数,默认具有public的属性。
C++ 类 内部的成员变量以及成员函数,默认访问级别是private。
无论是 结构变量 和 类的定义 建议在定义的时候统一加上public和private
2、C++结构体继承默认的是public,而C++类的继承默认为private。
额外说明:
(1)标准C++库里包含大量丰富的类和函数。string;
三、结构体和类的使用示例:
下面是一个简单的示例代码,演示了如何使用结构体和类:
#include <iostream> using namespace std; struct Student { int numbers; string name; }; class Teacher { private: int id; string name; public: Teacher(int i, string n) { id = i; name = n; } void printInfo() { cout << "Teacher ID: " << id << endl; cout << "Teacher Name: " << name << endl; } }; int main() { // 使用结构体 Student student1; student1.numbers = 123; student1.name = "John Doe"; cout << "Student Numbers: " << student1.numbers << endl; cout << "Student Name: " << student1.name << endl; // 使用类 Teacher teacher1(1, "Jane Smith"); teacher1.printInfo(); return 0; }