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 ...
随机推荐
- 一、微服务(Microservices)【翻译】
1.微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务.目前,这种架构方式还没有准确 ...
- 使用 suspend 和 resume 暂停和恢复线程
suspend 和 resume 的使用 在 Thread 类中有这样两个方法:suspend 和 resume,这两个方法是成对出现的. suspend() 方法的作用是将一个线程挂起(暂停), r ...
- docker打包项目部署
1.首先在本地安装docker,步骤可参考https://www.cnblogs.com/conswin/p/11055853.html 2.在对应项目目录下增加Dockerfile文件,其内容可参考 ...
- Leetcode题目152.乘积最大子序列(动态规划-中等)
题目描述: 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6 ...
- Linux dd烧写系统
虽然用dd指令烧写系统很简单,但是久而久之忘得也太快了,赶紧整理一下. .img 系统镜像 .iso U盘启动引导文件 1. 先来查看本机磁盘情况,打开Linux终端界面(快捷键Ctrl + Alt ...
- Android studio怎么使用git代码文件逐行追溯
在Android studio中集成了相当多的工具用于管理代码,应该现在经常使用的git的方式来管理管理,用于上传代码或者进行下载代码库中,而在git中进行管理的话,那么就可以进行历史的记录信息,如果 ...
- WPF学习笔记 - 数据绑定(在代码中)
在程序代码里,有两种设置绑定的方法,一种是调用FrameworkElement或FrameContentElement对象的SetBinding实例方法. 例如: Public MainWindow( ...
- python连接mysql数据库实例demo(银行管理系统数据库版)
主函数: import adminView import os import pickle from bankFunction import BankFunction import time def ...
- Java泛型(9):动态类型安全
因为可以向Java SE5之前的代码传递泛型容器,所以旧式代码仍有可能破坏你的容器.Java SE5中有一组便利工具,可以解决这种情况下类型检查的问题. 它们是静态方法checkedCollectio ...
- Mac下配置多个SSH Keys
Mac下配置多个SSH Keys 生成SSH key # Creates a new ssh key using the provided email # 默认生成的文件名为id_rsa,可以根据命令 ...