首页 > 编程语言 >C++类和对象-对象特性(2)

C++类和对象-对象特性(2)

时间:2024-01-22 22:48:21浏览次数:40  
标签:对象 构造 默认 特性 函数调用 拷贝 构造函数 C++

一. 构造函数的分类及调用

两种分类方式:

  • 按参数分为:有参构造和无参构造
  • 按类型分为:普通构造和拷贝构造

image

三种调用方式:

  • 括号法
  • 显示法
  • 隐式转换法
    image

二.拷贝构造函数调用时机拷贝构造函数调用时机

C++中拷贝构造函数调用时机三种情况

  • 使用一个已经创建完毕的对象来初始化一个新对象
  • 值传递方式给函数参数传值
  • 以值方式返回局部对象

三.构造函数的调用规则

默认情况下,C++编译器至少给一个类添加3个函数

  1. 默认构造函数(无参,函数体为空)
  2. 默认析构函数(无参,函数体为空)
  3. 默认拷贝构造函数,对属性进行值拷贝

构造函数调用规则如下:

  • 如果用户定义有参构造函数,C++不在提供默认无参构造,但是会提供默认拷贝构造
  • 如果用户定义拷贝构造函数,C++不会再提供其他构造函数

标签:对象,构造,默认,特性,函数调用,拷贝,构造函数,C++
From: https://www.cnblogs.com/Eric0521/p/17981251

相关文章

  • 面向对象初始化方法
    '''通过上节课的代码,发现只要创建一个手机对象,对象中拥有的数据尺寸=5.7品牌='华为'颜色='黑色'样式='曲面屏'价格=8888内存='1T'但是实际生活中,手机有很多品牌很多颜色样式价格内存在代码中如何解决?手机对象拥有不同的数据'''class手机:......
  • C++学习笔记
    C++学习笔记(1)预编译、编译、链接预编译(Preprocessing)cppreference中:GPT这么说:C++预编译是指在编译阶段之前对代码进行的一系列预处理操作。预编译的目的是为了将代码中的预处理指令和宏展开,以及进行一些其他的预处理操作。预处理指令包括以井号(#)开头的指令,如#include、#......
  • C++日志记录库spdlog
    镜像库https://gitee.com/yctxkj/spdlog.gitspdlog是基于C++11实现的一款纯头文件的日志管理库(git地址:https://github.com/gabime/spdlog,API说明:https://spdlog.docsforge.com/v1.x/1.quickstart/):配置特别简单,仅包含头文件即可;写日志方式简单明了;可实现自动按日期创建日志文......
  • C#对象二进制序列化优化:位域技术实现极限压缩
    目录1.引言2.优化过程2.1.进程对象定义与初步分析2.2.排除Json序列化2.3.使用BinaryWriter进行二进制序列化2.4.数据类型调整2.5.再次数据类型调整与位域优化3.优化效果与总结1.引言在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序......
  • KY85 二叉树C++
    递归判断当前节点和n的关系就好了。如果小于等于n那就是存在。#include<iostream>usingnamespacestd;intcount(inti,intn){if(i>n)return0;returncount(2*i,n)+count(2*i+1,n)+1;}intmain(){intn,m;while(cin>>m>>n){if(n==0)......
  • 【C++入门到精通】C++入门 —— 类和对象(拷贝构造函数、赋值运算符重载、const成员函
    编辑一、前言二、拷贝构造函数⭕拷贝构造函数概念⭕拷贝构造函数的特点⭕拷贝构造函数的几种类型三、赋值运算符重载⭕运算符重载概念⭕赋值运算符重载⭕前置++和后置++重载四、const成员函数⭕const成员函数概念⭕常量成员函数需要满足的特点⭕常量成员函数有利条件⭕const常量的......
  • 【C++进阶】function和bind及可变模板参数
     文章目录1.function和bind1.1function使用方法1.2bind2.可变模板参数2.1可变模板参数函数2.2可变模板参数的展开 1.function和bindC++中的function和bind是为了更方便地进行函数对象的封装和调用而设计的。function是一个通用的函数对象容器......
  • 【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名
     目录一、初始化列表⭕初始化列表概念⭕初始化列表的优点⭕使用场景⭕explicit关键字二、Static成员⭕Static成员概念......
  • 4147:汉诺塔问题(Tower of Hanoi)C++
    递归C和C++一样,就写个C++了。#include<iostream>usingnamespacestd;voidmove(intn,chara,charb,charc){if(n<=0)return;move(n-1,a,c,b);cout<<n<<":"<<a<<"->"<<c<<'\n�......
  • C++中lambda与priority_queue一起使用
    想写这篇博客的原因是在刷力扣的347.前K个高频元素一题时,需要使用到优先队列priority_queue,其定义如下:template<classT,classContainer=std::vector<T>,classCompare=std::less<typenameContainer::value_type>>classpriority_queue;第三个参数......