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 ...
随机推荐
- Eclipse一直building workspace问题解决
今天新导入了一个maven项目,但是总是一直building workspace 解决方案: 去掉图中Maven Project Builder勾选
- SQLAlchemy框架
Python 的 ORM 框架 SQLAlchemy 有些同学已经听说过这个框架的大名了,也听说了 SQLAlchemy 没有 Django 的 Models 好用 我在这里官宣辟谣一下啊, Mode ...
- springboot(七).springboot整合jedis实现redis缓存
我们在使用springboot搭建微服务的时候,在很多时候还是需要redis的高速缓存来缓存一些数据,存储一些高频率访问的数据,如果直接使用redis的话又比较麻烦,在这里,我们使用jedis来实现r ...
- BigDecimal常用的加减乘除算法、比较大小、不展示多余的零、保存两位小数点
项目中涉及到了BigDecimal的加.减.乘.比较大小.精确度的问题.所以在此总结一下,方便以后复习. //加法 BigDecimal coins = new BigDecimal("0& ...
- HearthBuddy CSharpCodeProvider 如何编译cs文件
源码 源码1 namespace Hearthbuddy.Windows{ // Token: 0x02000041 RID: 65 public class MainWindow : W ...
- hadoop新旧节点
注意:黑白名单只出现在名称(nn)节点<!-- 白名单 --><property><name>dfs.hosts</name>/Users/yangya ...
- 【MyBatis】实现in操作符在WHERE 子句中规定多个值
Mapper.xml中写: <select id="selectIdsByDate" resultType="java.lang.Long"> se ...
- 2.基于AOP自定义注解Annotation的实现
上一篇中分析了AOP的实现原理, 总结为: 判断对象是否需要被代理?@Aspect注解的实现是根据切入点表达式 代理之后需要做什么,就是那些通知,本质上是实现了MethodInterceptor的拦截 ...
- 客户端连接虚拟机上的MYSQL报错
这个原因是因为虚拟机的数据库拒绝其他主机访问 所以需要设置虚拟机的mysql 打开mysql mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' ID ...
- CSS三角形的实现原理及运用
原理 css盒模型 一个盒子包括: margin+border+padding+content– 上下左右边框交界处出呈现平滑的斜线. 利用这个特点, 通过设置不同的上下左右边框宽度或者颜色可以得到小 ...