结构体究竟是不是类

介绍

C++本没有结构体都是从C沿袭过来的,所以自然结构体也不如C结构体的定义丰富,所以在C++中,结构体与类并没有太大区别,甚至可以看作是亲兄弟。对于结构体,他的所有属性都是public而类所有属性都是private。仅此

应用

我们都有oop的概念,所以对于类的内存模型也会知道,其实类的内存模型完全适用于结构体,两者并无差距。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#pragma once
#ifndef _MYSTRU_H_
#define _MYSTRU_H_

#ifndef ConfidetReclude
#include <iostream>
using namespace std;
#endif

struct MyStru {
// 属性
int param;
// 成员方法(构造函数)
MyStru() : param(0) {cout << "无参构造函数" << endl;};
MyStru(int p) : param(p) {
cout << "有参构造函数,param值:" << param << endl;
};
// 成员方法(操作符)
bool operator< (MyStru& b) {
return param < b.param;
}
bool operator> (MyStru& b) {
return param > b.param;
}
// 成员方法(输出方法)
void printParam() {
cout << param << endl;
}
// 留给外部重写的虚方法
virtual void attriMethod();
};

// 子
struct sunStru : public MyStru {
// 可以重写虚方法
void attriMethod() {
cout << "儿子的方法" << endl;
}
};

[[endif]] _MYSTRU_H_

// 外部重写方法
void MyStru::attriMethod() {
cout << "外部重写了" << endl;
}

如代码所写的一样,结构体可以使用构造函数,也可以使用析构函数,也可以继承重写,所以C++的结构体就是类。

结语

本文解释了结构体和类的相似处,以至于可以看作是一个东西。


结构体究竟是不是类
https://blog.minloha.cn/posts/202920eff920612022082925.html
作者
Minloha
发布于
2022年8月29日
更新于
2023年12月21日
许可协议