C++中结构体的声明和定义的用法

本文详细介绍了C++中结构体(struct)和typedef的使用方法及区别,通过多个示例帮助开发者理解如何定义和使用这些特性。
1 	//定义一个结构体,类型为struct Student
2 	struct  Student     
3 	{
4 	    string name;
5 	    double eng;
6 	    double ch;
7 	}; 
8 	 
9 	//定义了一个结构体,类型为struct Student;且定义了一个结构体实例,名叫Stu
10 	struct  Student    
11 	{
12 	    string name;
13 	    double eng;
14 	    double ch;
15 	}Stu; 
16 	 
17 	//定义了无名的结构体,且定义了一个结构体实例,名叫Stu
18 	struct 
19 	{
20 	    string name;
21 	    double eng;
22 	    double ch;
23 	}Stu; 
24 	 
25 	//重定义结构体,类型为struct Student 或者是Stu
26 	typedef struct  Student  
27 	{
28 	    string name;
29 	    double eng;
30 	    double ch;
31 	}Stu; 
32 	 
33 	//重定义结构体,类型为Stu
34 	typedef struct  
35 	{
36 	    string name;
37 	    double eng;
38 	    double ch;
39 	}Stu;
40 	 
如果用typedef则,Stu stu; 
否则,struct Student stu; 
C++中,`struct` 是支持定义方法的。这与 `class` 似,不同之处主要在于默认的访问权限:`struct` 的成员默认是 `public`,而 `class` 的成员默认是 `private`。除此之外,`struct` 可以包含构造函数、析构函数、成员函数等,功能与 `class` 几乎完全一致。 例如,可以定义一个包含方法的结构体如下: ```cpp #include <iostream> using namespace std; struct Circle { double radius; // 构造函数 Circle(double r) : radius(r) {} // 方法:计算圆的面积 double area() const { return 3.14159 * radius * radius; } }; int main() { Circle c(2.0); cout << "Area: " << c.area() << endl; // 输出面积 return 0; } ``` 在上述代码中,`Circle` 是一个结构体,它定义了一个成员变量 `radius` 一个成员方法 `area()`,用于计算圆的面积。结构体通过构造函数初始化成员变量,并通过成员方法提供行为[^1]。 ### 相关特性 - **访问权限**:结构体的成员默认是 `public`,但如果显式使用 `private` 或 `protected` 关键字,则结构体的行为将与相似。 - **继承**:结构体可以继承自其他结构体,也可以被继承。 - **多态性**:结构体可以定义虚函数,实现运行时多态。 ### 示例:包含虚函数的结构体 ```cpp #include <iostream> using namespace std; struct Shape { virtual void draw() const = 0; // 纯虚函数 virtual ~Shape() {} }; struct Circle : Shape { void draw() const override { cout << "Drawing a circle." << endl; } }; int main() { Shape* shape = new Circle(); shape->draw(); // 输出 "Drawing a circle." delete shape; return 0; } ``` 在上述代码中,`Shape` 是一个包含纯虚函数的结构体,作为基被 `Circle` 继承并实现其方法。这种设计展示了结构体在面向对象编程中的强大能力[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值