前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++结构体的定义和创建

C++结构体的定义和创建

作者头像
是小张啊喂
发布2022-08-18 17:32:15
6600
发布2022-08-18 17:32:15
举报
文章被收录于专栏:软件软件

类的定义Student.cpp

代码语言:javascript
复制
#include <iostream>
using namespace std;

struct Student {
    // 成员变量
    string name;
    int age;

   // 成员函数
    void say() const {
        cout << name << "的年龄是" << age << endl;
    }
};
创建对象访问类的成员变量
  • 第一种 使用 . 访问成员变量
代码语言:javascript
复制
#include "student/Student.cpp"

int main() {
    // 创建对象
    Student student;
    student.name = "是小张啊";
    student.age = 21;
    student.say();
    return 0;
}
  • 第二种 使用对象指针
代码语言:javascript
复制
Student student;
 
// 创建的对象在栈上分配内存,需要使用&获取它的地址
Student stu;
Student *pStu = &stu;

// 或者使用new关键字
Student *pStu = new Student;

通过 new 创建出来的对象就不一样了,它在堆上分配内存,没有名字,只能得到一个指向它的指针,所以必须使用一个指针变量来接收这个指针,否则以后再也无法找到这个对象了,更没有办法使用它。也就是说,使用 new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。

代码语言:javascript
复制
#include "student/Student.cpp"

int main() {
    //创建对象
    Student *pStu = new Student;
    pStu->name = "是小张啊";
    pStu->age = 21;
    pStu->say();
    delete pStu;  //删除对象
    return 0;
}

除了在类中定义成员函数,还可以在类体中声明函数,而把函数的定义写在类体外,例如:

代码语言:javascript
复制
#include <iostream>
using namespace std;

struct Student {
    //成员变量
    string name;
    int age;

    //成员函数
    void say();  //函数声明
};

//函数定义
void Student::say() {
    cout << name << "的年龄是" << age << endl;
}

没有实际作用,不推荐使用这种方式

结构体 const

在结构体中使用const 可以方式误操作结构体

代码语言:javascript
复制
// 声明一个 Student 的结构体
struct Student {
    //成员变量
    string name;
    int age;
};

// 打印这个结构体中的信息
void print(Student student){
    // 修改这个结构体的信息 
    student.name = "小廖";
    cout << student.name << "的年龄是" << student.age << endl;
    // 小廖的年龄是:21  - 但是如果我不想修改,这个是个误操作的话,我想正常打印"小张"
}

int main() {
    struct Student student = {"小张", 21};
    print(student);
}
代码语言:javascript
复制
// 只需要在函数中添加const 关键字
void print(const Student student){
    // 修改这个结构体的信息 
    // 提示你不能修改
    // student.name = "小廖";
    cout << student.name << "的年龄是" << student.age << endl;
    // 小张的年龄是:21  
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建对象访问类的成员变量
  • 结构体 const
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档