C++第01课 C++与C的区别(七)
时间:2021-09-03
本文章向大家介绍C++第01课 C++与C的区别(七),主要包括C++第01课 C++与C的区别(七)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.结构体基本区别
struct MM { char name[20]; int age; void print() //默认为内联函数 { cout << name << "\t" << age << endl; } }; int main() { //1.定义变量时省略关键字 struct MM m;//C语言方式 MM mm; //2.new MM MM* pMM = new MM; MM* pMMArr = new MM[4]; //3.结构体可以包含函数 MM mm1 = { "mm1",18 }; MM mm2 = { "mm2",17 }; MM* pmm = &mm2; mm1.print(); pmm->print(); return 0; }
2.结构体的构造
struct Empty { void print() { cout << "空的结构体" << endl; } }; //C++允许在定义结构体时给数据赋值,当我们构建一个没有初始化的对象时采取默认值 struct MM { char name[20] = "小可爱"; int age = 16; MM() = default; MM(const char* name,int age):age(age){ strcpy(this->name, name); } void print() { cout << name << "\t" << age << endl; } }; struct Boy { int age; //删掉默认构造函数 Boy() = delete; }; int main() { cout << sizeof(struct Empty) << endl; //空的结构体占用一个字节的标识位(函数对结构体内存不影响) MM mm; mm.print(); MM mm1 = { "小甜心",18 }; mm1.print(); //创建对象的过程就是调用构造函数的过程 MM mm2("小宝贝", 19); mm2.print(); //new对象的过程也是调用构造函数的过程 //先创建一个无名对象,然后把无名对象的首地址赋值给指针 MM* mm3 = new MM("张三",14); mm3->print(); return 0; }
3.结构体的几种初始化方式
struct Boy { //1.定义结构体的时候初始化 char name[20]="张三"; int age=10; //2.构造函数完成数据初始化 常用 Boy() = default; Boy(const char* name, int age) :age(age) { strcpy(this->name, name); } //3.通过成员函数传参 void init(const char* name, int age) { strcpy(this->name, name); this->age = age; } //4.提供返回引用 int& getAge() { return age; } void print() { cout << name << "\t" << age << endl; } };
4.构造函数对定义变量的影响
struct Test { char name[20]; int age; Test(const char* name, int age) { strcpy(this->name, name); this->age = age; cout << "调用构造函数" << endl; } void print() { cout << name << "\t" << age << endl; } }; void print(Test t) {//传参是赋值方式 t.print(); } int main() { //下面的代码也是调用构造函数的过程 Test t = { "张三",12 }; //调用两个参数的构造函数 Test t1("李四", 15); t1 = t; //和Test t = { "张三",12 }; 完全不一样 t1.print(); return 0; }
原文地址:https://www.cnblogs.com/creature-lurk/p/15225212.html
- Veeam Backup & Replication(一):安装及配置
- HDUOJ-----Computer Transformation
- Veeam Backup & Replication(二):添加虚拟化主机和配置备份存储
- HDUOJ 2672---god is a girl 《斐波那契数》
- Golang语言--一些基础用法
- 复杂SQL性能优化的剖析(一)(r11笔记第36天)
- hduoj1073--Online Judge
- Golang语言--- channel
- Golang语言--将byte的int转换
- HDUOJ------Daydream字符查找-并求其始末位置
- HDUOJ------敌兵布阵
- 复杂SQL性能优化的剖析(二)(r11笔记第37天)
- HDUOJ-------Being a Good Boy in Spring Festival
- Golang语言--slice 切片原理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AkShare-股票数据-龙虎榜-个股上榜统计
- React中路由的使用
- CyanX 基于ReactHook的状态管理器,遵循函数式编程的理念,极简、可扩展设计哲学上手
- Serverless 架构下如何实现日志的实时输出?
- typescript基础篇(1):helloworld
- typescript基础篇(2):数据类型
- 22款好用的CLI工具
- typescript基础篇(3):接口
- 2020 年,苹果的 AI 还有创新吗?
- 毕设有着落了!一套开源的,基于SpringBoot的车牌识别系统
- 详解hive的join优化
- 区块链时代的世界宪章:代码即法律
- SQL 计算公司的期初资产
- nested exception is java.lang.IllegalStateException: refreshAfterWrite requires
- 除了会排序,你对ORDER BY的用法可能一无所知!