【C++精简版回顾】6.构造函数

一。类的四种初始化方式

1.不使用构造函数初始化类

        使用函数引用来初始化类

class MM {
public:string& getname() {return name;}int& getage() {return age;}void print() {cout << "name: " << name << endl << "age: " << age << endl;}
private:string name;int age;
};
int main() {MM mm;mm.getname()= "wangjianghui";mm.getage()= 25;mm.print();return 0;
}

 结果:

注意:

        函数引用是:

        正确: int& getage() { return age;}//直接引用私有属性直接修改他。

        错误: int& getage(int age) { return age;}

2.使用构造函数初始化类

使用构造函数初始化类,就算不写构造函数,C++也会自己有一个默认构造函数,类似下面

MM() {}
class MM {
public:MM() { cout<<"默认构造函数已经使用" << endl; }MM(string a, int b) {name = a;age = b;}void print() {cout << "name: " << name << endl << "age: " << age << endl;}
private:string name;int age;
};
int main() {MM mm("wangjianghui",25);mm.print();cout << "使用默认构造函数" << endl;MM mm2;return 0;
}

3.拷贝构造函数

class MM {
public:MM() {}MM(string a, int b) {name = a;age = b;}MM(MM& object) {name = object.name;age = object.age;}void print() {cout << "name: " << name << endl << "age: " << age << endl;}
private:string name;int age;
};
int main() {MM mm("wangjianghui",25);MM mm1;mm1 = mm;mm.print();return 0;
}

注意:

MM(MM& object) {name = object.name;age = object.age;
}

如果不写&

MM(MM object) {name = object.name;age = object.age;
}

会报错, “MM”: 非法的复制构造函数: 第一个参数不应是“MM”     

4.初始化参数列表

class MM {
public:MM(string s_name, int i_age) :name(s_name), age(i_age) {}void print() {cout << name <<'\t' << age << endl;}
private:string name;int age;
};
int main() {MM mm("wangjianghui", 25);mm.print();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485055.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024软件测试面试必会技能】

Unittest(5)&#xff1a;unittest_忽略用例 忽略用例 在执行测试脚本的时候&#xff0c;可能会有某几条用例本次不想执行&#xff0c;但又不想删也 不想注释&#xff0c;unittest通过忽略部分测试用例不执行的方式&#xff0c;分无条件忽略和有条 件忽略,通过装饰器实现所描述…

基于Embedding召回和DSSM双塔模型

文章目录 基于Embedding召回介绍基于Embedding召回算法分类I2I召回U2I召回 DSSM模型DSSM双塔模型层次 基于Embedding召回介绍 基于embedding的召回是从内容文本信息和用户查询的角度出发&#xff0c;利用预训练的词向量模型或深度学习模型&#xff0c;将文本信息转换成向量进行…

进程线程间的通信:2024/2/22

作业1&#xff1a;代码实现线程互斥机制 代码&#xff1a; #include <myhead.h>//临界资源 int num10;//创建一个互斥锁 pthread_mutex_t mutex;//任务一 void *task1(void *arg) {//获取锁资源pthread_mutex_lock(&mutex);num123;sleep(3);printf("task1:num…

【打工日常】使用docker部署StackEdit编辑器-Markdown之利器

一、StackEdit介绍 StackEdit一款强大的在线Markdown编辑器&#xff0c;不仅具备卓越的写作功能&#xff0c;还支持实时预览、多设备同步等特性。 很多时候基于安全和信息保密的关系&#xff0c;建议放在自己的服务器或者本地linux去运行&#xff0c;这样会比较省心。 二、本次…

电商数据采集+跨境电商|API电商数据采集接口洞悉数字新零售发展

随着全球经济一体化和电子商务的快速发展&#xff0c;网络购物的需求日益增加。不断涌现的电商企业使得行业的竞争情况愈演愈烈。在这种情况下&#xff0c;企业不仅要加大经营力度&#xff0c;还要在自己的基础设施和技术上持续投入&#xff0c;才能更好的适应市场和消费习惯。…

船运物流管理系统|基于springboot船运物流管理系统设计与实现(源码+数据库+文档)

船运物流管理系统目录 目录 基于springboot船运物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、货运单管理 3、公告管理 4、公告类型管理 5、新闻管理 6、新闻类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 …

2024.2.22

P1162 #include<map> #include<vector> #include<iostream> #include<math.h> #include<algorithm> #include<string> using namespace std; const int N 1020; int n; int g[N][N];//标记数组 int a[N][N];//储存数组 int dx[] { -1…

《VitePress 简易速速上手小册》第9章 VitePress 的扩展与插件(2024 最新版)

文章目录 9.1 插件生态系统概述9.1.1 基础知识点解析9.1.2 重点案例&#xff1a;SEO 优化插件9.1.3 拓展案例 1&#xff1a;社交分享插件9.1.4 拓展案例 2&#xff1a;内容搜索插件 9.2 常用插件介绍与应用9.2.1 基础知识点解析9.2.2 重点案例&#xff1a;使用 SEO 插件9.2.3 拓…

day6 2/22

1> 将互斥机制的代码实现重新敲一遍 #include<myhead.h> int num520; pthread_mutex_t mutex;//创建互斥锁 void*task1(void*arg) {pthread_mutex_lock(&mutex);sleep(3);num;printf("%d\n",num);pthread_mutex_unlock(&mutex);pthread_exit(NULL)…

300分钟吃透分布式缓存-10讲:MC是怎么定位key的?

我们在进行 Mc 架构剖析时&#xff0c;除了学习 Mc 的系统架构、网络模型、状态机外&#xff0c;还对 Mc 的 slab 分配、Hashtable、LRU 有了简单的了解。本节课&#xff0c;将进一步深入学习这些知识点。 接下来&#xff0c;进入 Memcached 进阶的学习。会讲解 Mc 是如何进行…

《游戏引擎架构》 -- 学习4

资源及文件系统 文件系统 游戏引擎的文件系统API通常提供以下功能&#xff1a; 搜需路径&#xff1a;是含一串路径的字符串&#xff0c;各路径之间以特殊字符&#xff08;如冒号或分号&#xff09;分隔&#xff0c;找文件时就会从这些路径进行搜寻。例如在命令行下执行程序&a…

IBM集团战略规划方法论培训及案例应用

139页PPT | IBM集团战略规划方法论培训及案例应用 原创 顾问文库 咨询圈文库 2024-02-19 00:02 广东 关注下方名片学习更多企业架构和数字化内容 咨询圈文库 分享战略组织人力资源管理和数字化规划干货&#xff0c;共同成长。 24篇原创内容 公众号 战略规划是一种思考、分…