C++:08---成员变量初始化方式

成员变量初始化有三种方式:

  • 在构造函数体内赋值初始化

  • 在自定义的公有函数体中赋值初始化(一般用于成员变量的初始化)

  • 在构造函数的成员初始化列表初始化

一、构造函数体内初始化

  • 说明:在构造函数体内的初始化方式,本质是是为成员变量赋值,而不是真正意义上的初始化,这点要特别注意!(下面介绍成员初始化列表时会有演示案例对比说明)

class Cperson
{
private:
int m_age;
float m_height;
char* m_name;
public:
Cperson(int age,float height,const char* name)
{
m_age=age;
m_height=height;
if(m_name)//先判断当前是否为空
delete[]  m_name;
if(name)//如果外部传入的不为空
{
int len=strlen(name);
m_name=new char[len+1];//创建内存
strcpy(t m_name,name);
}
else
m_name=nullptr;
}
}

二、自定义的公有函数体中赋值初始化

  • 说明:与构造函数体内初始化方式一样,此种方式本质上也是赋值,而不是初始化

class Cperson
{
private:
int m_age;
float m_height;
char* m_name;
public:
void setPerson(

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

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

相关文章

leetcode1290. 二进制链表转整数 刷新认知,最简单算法题

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1: 输入:head [1,0,1] 输出:5 解释:二进制数 (101) 转化为十进…

Redis:02---安装Redis(Linux+Windows+Docker)

Linux安装:一、安装方式1(下载源码编译安装)第一步:从下面的网址中下载Redis最新稳定版本的源代码sudo wget http://download.redis.io/redis-stable.tar.gz第二步:下载完之后解压,建立一个软链接指向于red…

C++:10---再议拷贝构造函数

一、概念 使用一个已经存在的对象,去构造(初始化)另一个对象二、格式 参数加上const&,因为拷贝构造函数在几种情况下都会被隐式地使用,因此拷贝构造函数不应该是explict的const:防止函数内部修改值&:防止无限循环拷贝类名(类名 const& 参数名) { 函数体 }三、…

人的思维谬误与心理学效应

启发法 用一个容易的问题代替难以回答的真正问题。这个容易的问题的答案就是对真正问题的启发,但启发经常和真正的答案差得很远,而人却往往把启发当成了真正问题的答案。 接下来介绍和启发法相关的心理效应和谬误。每一个谬误都会注明真正的问题是什么…

C++:07---this指针

一、this指针介绍 概念:this指针是成员函数的一个隐式参数,在类中本质上就是对象的指针(常量指针)特点:在成员函数中可通过this指针区别成员变量与形参变量this可以显式调用示例代码:class Cperson { private: int age; float height; public: void InitPerson(int age,flo…

Redis :01---Redis简介和安装

一、Redis简介 Redis官网:https://redis.io/ Redis是一种基于键值对(key-value)的NoSQL数据库 与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、 list&…

215. 数组中的第K个最大元素 BFPRT最牛解法

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4 说明: 你可以假设 k 总是…

C++: 06---构造函数析构函数

拷贝构造函数: 用一个已经存在的对象来生成一个相同类型的新对象。(浅拷贝)默认的拷贝构造函数: 如果自定义了拷贝构造函数,编译器就不在生成默认的拷贝构造函数。 如果没有自定义拷贝构造函数,但在代码中用到了拷贝构造函数,编译器会生成默认…

leetcode371. 两整数之和 不用+号做加法

不使用运算符 和 - ,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。 示例 1: 输入: a 1, b 2 输出: 3 示例 2: 输入: a -2, b 3 输出: 1 思路:模拟加法器 二进制不考虑进位:000,010,110,是…

C++:05---class和struct

C++被称为“C with class”,可见在C++中class是多么重要,与class类似的一个结构就是struct了,struct最早是在C语言中出现的,在C++中对struct的功能也进行了扩展。 class : public(公有):在类内外、派生类中都可被访问protected(保护):希望与派生类共享但是不想被公共…

leetcode34. 在排序数组中查找元素的第一个和最后一个位置

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums [5,7,7,8,8,10], target 8 输…

C++:11---友元函数、友元类

一、友元(friend) 概念:通过友元,打破了类的封装性,可以访问类内的所有成员分类:友元函数、友元类二、友元函数 概念:友元函数是一个普通函数,不属于类,但需要在类内表明友元关系 友元函数可访问类内所有成员,但类不可以访问友元函数…

leetcode75. 颜色分类

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码…

C++:12---运算符重载

一、概念 对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型重载的运算符是具有特殊名字的函数,该函数也有返回值、参数列表、函数体二、运算符重载的3种实现方式 成员函数:私有、公有、保护都可以友元函数:同上全局函数:只能访问公有的三、运算符重载的…

Redis:03---Redis的启动与配置参数大全

一、Redis的可执行文件当我们安装完Redis之后,src和/usr/local/bin目录下提供了下面这些可执行程序,我们称之为Redis Shell:redis-serverRedis服务器redis-cliRedis命令行客户端redis-benchmarkRedis性能测试工具redis-check-aofRedis AOF持久…

leetcode80. 删除排序数组中的重复项 II

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定 nums [1,1,1,2…

Redis:04---键的基本命令(上)

一、KEYS:全量遍历键KEYS pattern功能:用来获取此数据库中所有的键名注意事项:KEYS命令需要遍历Redis中的所有键,当键的数量较多时会影响性能,不建议在生产环境下使用支持glob风格通配符格式,见下表&#x…

leetcode67. 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a "11", b "1" 输出: "100" 示例 2: 输入: a "1010", b "1011" 输出…

C++:13---继承(单一继承、多重继承、多级继承、菱形继承、虚继承)

一、基类与派生类的概念 基类(父类):在继承关系中处于上层的类派生类(子类):在继承关系中处于下层的类class A;class B;class C:public A //C为A的子类,A为C的父类{};class D:public A,public B //D为A和B的子类,A和B均为D的父类{};二、类派生列表 派生类通过派生类列…

(十三) 深入浅出TCPIP之setsockopt参数详解

在socket编程中我们会经常用到setsockopt这个函数,那么本节我们将对这个函数的参数和使用做说明: 首先看下函数原型: int setsockopt( int socket, int level, int option_name,const void *option_value, size_t ,ption_len); 第…