C++结构体、类和对象
在C++中结构体(struct)和类(class)可以通用,[结构体是一种特殊的类]
struct和class的区别:访问和控制。
struct在缺省值的情况下可以是public在外部被访问到对于类来说缺省情况下的成员函数,所有的数据成员都是私有的,不能够被外部访问的。
{public:private:protected:}这三个控制访问标识符控制一个类内部的数据成员和它的成员函数对外的可见性是否在哪种情况下被访问(通过这三个标识符控制)
家作为类: public:它所有的成员都可以在外部被访问。
(class) (客厅)
private:私有部分(客人不能进去访问)。
(卧室)
protected:子类和父类之间访问控制。
**在定义结构体和类时一定要在{}后面加分号
类是抽象的概念,用于创建对象,对象是类的实例,是客观世界真实存在的实体。
类和对象的区别:类是抽象事物的共有的属性;
对象是具有一个具值属性值的事物;
类的实例和类的对象的区别:
类的实例等同于一个对象(实例化一个对象)
(产生了类的一个对象)
面向过程到面向对象的转变:
成员函数:结构体中的函数。
结构体:
#include <iostream>
struct Student //定义结构体
{
char *name; //结构体包含的成员变量
int age; //结构体包含的成员变量
float score; //结构体包含的成员变量
};
void display(struct Student stu) //显示结构体的成员变量
{
printf("%s的年龄是%d,成绩是%f\n",stu.name,stu.age,stu.score);
}
int main()
{
struct Student stu1;
//为结构体的变量赋值
stu1.name = "小明";
stu1.age = 15;
stu1.score = 92.5;
display(stu1);//调用函数
return 0;
}
结果:小明年龄是15,成绩是92.500000
类:
#include <iostream>
class Student //通过class关键字定义类
{
public: //类包含的变量
char *name;
int age;
float score;
void say() //类包含的函数
{
printf("%s的年龄是%d,成绩是%f\n",name,age,score);
}
};
int main()
{
//通过类来定义变量,即创建对象
class Student stu1; //也可以省略关键字class
stu1.name = "小明"; //为来的变量赋值
stu1.age = 15; //为类的变量赋值
stu1.score = 92.5f; //为类的变量赋值
stu1.say(); //调用成员函数
return 0;
}
C++结构体、类和对象的更多相关文章
- 枚举类 enum,结构体类 struct
1.枚举类型的值,直观易于理解,见词知意. 格式: enum 枚举类名:值类型 { 值1, 值2, 值n } 每个值默认(省略“:值类型”)以int型数据存储,从0开始. 使用格式:枚举类名 变量=枚 ...
- 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
- QT: QByteArray储存二进制数据(包括结构体,自定义QT对象)
因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 / ...
- Swift枚举|结构体|类|属性|方法|下标脚本|继承
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
- [C]语法, 知识点总结(二. 结构体, 类别名, static, const)
结构体 定义: struct Student{ // 定义结构体Student, stu是创建的对象 char a[17]; // 结构体里面可以有多种不同类型的变量 ...
- QByteArray储存二进制数据(包括结构体,自定义QT对象)
因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 //自定义person结构体 typede ...
- [转]C++结构体|类 内存对齐详解
内存地址对齐,是一种在计算机内存中排列数据(表现为变量的地址).访问数据(表现为CPU读取数据)的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐 . 为什么需要内存对齐?对 ...
- QMap的key也可以是一个结构体类吗?
QMap<usbsnvidpid, QVector<QString>> USBVIDPIDTIME; USBVIDPIDTIME.insert(m_vidpidsn, time ...
- [翻译] 编写高性能 .NET 代码--第五章 通用编码与对象设计 -- 类 vs 结构体
本章介绍了本书其它部分未涉及到的一些编码和设计原则.包含了一些.NET的应用场景,有些不会造成太大危害,有些则会造成明显的问题.剩下的则根据你的使用方法会产生不同的效果.如果要对本章节出现的原则做一个 ...
- C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱
一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...
随机推荐
- jquery-常用事件
- Django基础之cookie
1. Cookie 1.1 Cookie的由来 大家都知道HTTP协议是无状态的.无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系, 它不会受前面的请求响应情况 ...
- UOJ社区版安装多个Judger
目录 声明 在同一台机器上安装 在不同机子上安装 声明 本文档非官方文档,为我试坑的经验总结. 本文编写时间 2019.11.04 ,并不一定会随UOJ更新而更新. 由于UOJ需要用SVN传题,并不那 ...
- ARTS打卡计划第十六周
Algorithms: https://leetcode-cn.com/problems/min-stack/submissions// Review: https://www.infoq.cn/ar ...
- jquery中mouseover和mouseenter的区别
jquery中mouseover和mouseenter的区别 一.总结 一句话总结: 见名知意:enter(进入)和over(在上方)的意思好好思考一下 mouseover就是从子元素回到自己的时候也 ...
- 博客&git收藏
阿里中间件团队博客 http://jm.taobao.orgkimmking https://blog.csdn.net/KimmKing/article/details/71517053 greys ...
- goland 可用注册码(license)
N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iLCJhc3NpZ25lZU5hbWUiO ...
- 几句java代码搞定十万个为什么数据
最近想做一个app,为小朋友推荐十万个为什么的故事,但是找了很久数据,发现挺难的找的,又去写爬虫,发现没有一个好的网站可以爬,最后一个偶然的机会在csdn上发现一个可用的接口,很快就把问题解决了,下面 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-5.PageHelper分页插件使用
笔记 5.PageHelper分页插件使用 简介:讲解开源组件,mybaits分页插件的使用 1.引入依赖 <!-- 分页插件依赖 --> ...
- Linux (Ubuntu)上面安装maven
1 首先检查linux上是否有maven mvn -v 或者mvn -version 如果没有安装,提示如下: ubuntu@ip----:~$ mvn -v The program 'mvn' ca ...