c++结构体使用


1、结构体简介

1.1、定义

结构体是一种数据类型,可以容纳不同的类型值。

1.2、结构体与类的差异

结构体使用关键字struct、类使用关键字class

结构体可以包含成员函数,但很少这样做。通常只声明成员变量。

结构体通常不包括public活private访问修饰符

类成员变量默认是private、结构体成员变量默认是public

2、struct使用实例

2.1、struct定义实例

结构体struct和类一样在定义时不会被实例化。

例如声明一个学生struct类型

struct Student{
int id;
string name;
double score;
}

2.2、定义struct变量

struct变量定义与其他并无差别

Student stu1,stu2,stu3;

2.3、struct初始化

结构体可以使用初始化列表或构造函数进行初始化。使用列表进行初始化时,不可跳过成员列表。

2.3.1、列表初始化

Student st1={1,"jsy",100}

列表初始化2个缺点

       1.如果有某个成员未被初始化,那么在这种情况下,跟随在该成员后面的成员都不能初始化。

        2.如果结构体包括任何诸如字符串之类的对象,那么在许多编译器上它都将无法运行。

2.3.2、结构体构造函数初始化方式

        1.利用结构体自带的默认构造函数
        2.利用带参数的构造函数
        3.利用默认无参的构造函数

在建立结构体数组时,如果只写了带参数的构造函数将会出现数组无法初始化的错误

比较安全的带构造的结构体示例

#include
#include 
using namespace std;
struct Student{
    int id;
    string name;
    double score;


    // 自定义初始化函数
    void init(int id,string name,double score){
        this->id=id;
        this->name=name;
        this->score=score;
    }
    // 无参初始化函数
    Student(): id(),name(),score() {}
    Student(int id,string name, double score):id(id),name(name),score(score) {}

}stu[10];

int main()
{
    // stu[0] = {1,"jsy",5};  //调用默认构造函数 ,这个编译没过gcc,哭
    stu[1].init(2,"ldb",6); //调用自己实现的构造函数
    stu[3]=Student(3,"ljm",1);//调用有参构造函数

    // 结构体数组遍历
    for(int i=0;i<10;i++){
        cout<

C++结构体完全攻略(超详细)

C++ - 结构体构造函数使用总结 - _starsky - 博客园

http://c.biancheng.net/view/1407.html 

你可能感兴趣的:(c++,c++,开发语言)