C++派生类的构造函数和复制控制

C++派生类的构造函数和复制控制函数 复制成员和构造函数式 一、派生类的构造函数 阅读详情

派生类的构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员,像任何类一样,如果类没有定义自己的构造函数和复制控制成员,编译器自动合成。

1.构造函数

派生类的构造函数先要初始化基类的成员,然后初始化本类的成员

下面定义一个Father类,头文件如下:

#if !defined(AFX_FATHER_H__C5B84CD6_0B79_4806_BEDA_035EB4183F8B__INCLUDED_)
#define AFX_FATHER_H__C5B84CD6_0B79_4806_BEDA_035EB4183F8B__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <string>
class Father  
{
public:
	Father();
	Father(std::string job,std::string address);
	virtual ~Father();
	virtual void sayHello();
	std::string job;
	std::string address;

};

#endif // !defined(AFX_FATHER_H__C5B84CD6_0B79_4806_BEDA_035EB4183F8B__INCLUDED_)


源文件如下:

#include "Father.h"
#include<iostream>
Father::Father()
{

}

Father::Father(std::string job,std::string address)
{
	this->job=job;
	this->address=address;
}

Father::~Father()
{

}
void Father::sayHello()
{
	std::cout<<"Hello"<<std::endl;
}


下面写一个Son类使用public继承Father,那么,Son类的构造函数可以如下写

Son::Son(std::string job,std::string address,std::string pcname,std::string phonename):Father(job,address)
{
	this->pcname=pcname;
	this->phonename=phonename;
}


首先调用基类的构造函数,初始化基类的成员。

2.复制构造函数

Son::Son(const Son& ss):Father(ss)
{
	this->pcname=ss.pcname;
	this->phonename=ss.phonename;
}


先调用基类的复制构造函数,初始化基类的成员,然后初始化本类的成员

 

3.赋值操作符

Son& Son::operator =(Son& ss)
{
	Father::operator=(ss);
	this->pcname=ss.pcname;
	this->phonename=ss.phonename;
	return *this;
}


显式调用基类的赋值操作符。

C++派生类构造函数详解与应用 本文还有配套的精品资源,点击获取 简介:C++中的派生类通过继承基类属性和方法来构建新类,其中构造函数负责初始化派生类对象。派生类构造函数需确保基类成员也得到正确初始化,并遵循从基类到派生类的初始化顺序。了解构造函数的多重调用顺序和继承特性,以及如何处理多重继承和构造函数的使用,是成为高级C++开发者的关键。 1. 派生类和继承概念 在面向对象编程中,继承是... 阅读详情

相关推荐

具身智能:从理论突破到场景落地的全解析

具身智能(Embodied Intelligence)是人工智能与机器人学深度融合的前沿领域,其核心在于通过物理实体与环境的动态交互实现智能行为。区别于传统 AI 的 “离身性”(如语音助手仅依赖数据输入),具身智能强调 “智能体通过身体感知世界并反作用于环境”,形成 “感知 - 决策 - 行动” 的闭环。例如,能自主避障的配送机器人、可精准抓取异形物体的机械臂,均通过传感器网络与环境实时互动,在试错中优化行为策略。

LeeKumaの技术Note 2681

C++ 派生类的构造函数总结

1 简单的派生类的构造函数的一般形式 为:  派生类构造函数名(总参数表):基类构造函数名(参数表) {派生类中新增数据成员初始化语句} 2 有子对象的派生类的构造函数的一般形式为:  派生类构造函数名(总参数表):基类构造函数名(参数表),子对象(参数表) {派生类中新增数据成员初始化语句} 3 多层派生时的构造函数 不要列出每一层派生类的构造函数,只需写出其上一层派生类

Z_Dream_ST的博客 2150

用Multisim和AD2复刻经典:手把手教你搭建μA741三角波-方波发生器(附完整避坑指南)

本文详细介绍了如何使用Multisim和AD2搭建基于μA741运算放大器的三角波-方波发生器,包括电路原理、Multisim仿真流程、AD2硬件搭建及调试技巧。通过对比理论计算、仿真和实测数据,深入分析器件非理想特性的影响,并提供16个典型问题的解决方案,帮助读者掌握波形发生器的设计原理和工程调试经验。

weixin_28744423的博客 284

C++派生类的构造函数

如果不需要调用基类的带参数的构造函数,也不需要调用新增的成员对象的带参的构造函数,派生类也可以不用声明构造函数,全部采用默认的构造函数,这时新增成员的初始化工作可以用其他公有成员函数来完成。当派生类没有显式构造函数时,系统会隐含生成一个默认构造函数,该函数会使用基类的默认构造函数对继承自基类的数据初始化,并且调用派生类的类类型的成员对象的默认构造函数,对这些成员对象初始化。如果一个基类同时声明了默认构造函数和带参数的构造函数,那么在派生类构造函数声明中,既可以显式列出基类名和相应的参数,也可以不列出。

NuYoaH502329的博客 1514

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

m0_61961937的博客 1万+

抖音无水印视频解析全攻略:从原理到2025实战工具推荐

短视频创作和素材整理绕不开一个基础需求:如何从抖音等平台获取不带水印的清晰视频。这背后涉及的其实是常见的链接解析与播放地址还原技术——平台对外分发带水印的地址,但源视频文件往往存在可访问的公开入口。理解这一原理,不仅能帮我们判断工具是否安全,也能避免在搜索“抖音视频解析”、“无水印视频下载”时踩坑。无论是剪辑师收集二创素材、运营人员备份品牌内容,还是普通用户保存高清视频,掌握一套稳定、合规的下载方法都很有价值。本文从水印生成机制讲起,梳理了网页工具、插件、脚本等不同实现形态的优缺点,并给出2025年仍然有效

weixin_42666036的博客 443

C++派生类构造函数

派生类构造函数的主干,它和以前介绍过的构造函数的形式相同,但是,它的总参数列表中包括基类构造函数所需的参数和派生类新增的成员变量初始化所需的参数。基类的构造函数是不能继承的,在声明派生类的时候,派生类并没有把基类的构造函数继承过来,因此,对继承过来的基类成员初始化的工作,也要由派生类的构造函数承担。其中,派生类的构造函数名是student_new(),在函数末尾,添加一个冒号“:”,然后, 跟着基类student的构造函数。其中,前2个参数赋给基类的构造函数,调用基类的构造函数。

LC的专栏 1300

window部署open claw(使用wsl-Ubuntu-docker部署)

本文详细介绍了在Windows 11系统下通过WSL2+Docker部署OpenClaw的完整流程。首先需要满足硬件配置要求并开启虚拟化功能,然后依次完成WSL2安装配置、Docker Desktop安装、OpenClaw镜像拉取等步骤。重点说明了端口映射、socat转发配置及openclaw.json文件修改方法。最后通过验证WSL2内网IP和端口访问服务。该方案具有最佳兼容性,能有效避免Windows环境下的依赖冲突问题。

Kmoyic的博客 2763

C++面向对象程序设计 - 派生类的构造函数和析构函数

构造函数的主要作用对数据成员初始化,基类的构造函数是不能被继承的,在声明派生类时,派生类并没有把类的构造函数继承下来。因此,对继承过来的基类成员初始化的工作也要由派生类的构造函数完成;所以在派生类中不仅要考虑自身增加的数据成员的初始化,还要考虑基类的数据成员的初始化。

觉醒法师的专栏 2078

LEC/FORMAL --- PARTIII debug

lec(logic equivalence checking)又叫formal check,是对ic design的综合,PR前后的设计进行逻辑对比检查的工具/手段,保证综合不改变rtl原始的logic function。目前用的较多的就是C家的formal工具。接下来介绍一下lec过程中遇到的问题以及debug手段。...

sinat_27691203的博客 7709

11-16 Fluent结果查看及后处理功能(做动画、监控点)

监控点、面及动画操作

zheaa的博客 1万+

C++ Primer 面向对象编程 15.3 基类派生类相互转换 15.4. 构造函数和复制控制

1.将对象传给希望接受引用的函数时,引用直接绑定到该对象,虽然看起来在传递对象,实际上实参是该对象的引用,对象本身未被复制,并且,转换不会在任何方面改变派生类型对象,该对象仍是派生类型对象。 将派生类对象传给希望接受基类类型对象(而不是引用)的函数时,情况完全不同。在这种情况下,形参的类型是固定的——在编译时和运行时形参都是基类类型对象。如果用派生类型对象调用这样的函数,则该派生类对象的基类部分

big_bit的博客 525

数据库系统工程师软考备战:第三篇 - SQL语言深入解析与应用

​​创建表​​​修改表​​​删除表​。

Programming Talk 122

C++继承与构造函数、复制控制

每个派生类对象由派生类中定义的(非static)成员加上一个或多个基类子对象构成,因此,当构造、复制、赋值和撤销派生类型对象时,也会构造、复制、赋值和撤销这些基类子对象。         构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员。像任何类一样,如果类不定义自己的默认构造函数和复制控制成员,就将使用合成版本。   1:构造函数和继承        派生类的构造函

程序员的自我修养 3548

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android构造函数重载,C++中复制构造函数与重载赋值操作符的深入分析

在C++中复制控制是一个比较重要的话题,主要包括复制构造函数、重载赋值操作符、析构函数这三部分,这三个函数是一致的,如果需要手动定义了其中了一个,那么另外的两个也需要定义,通常在存在指针或者前期相关操作的情况下,都需要手动的定义。复制构造函数与重载赋值操作符实现的大题相同,如果没有手动的实现,那么编译器会自动生成一个,而且这两个函数的参数也是一致的,是不能够改变的,这是为什么呢?这是值得我们去分析...

weixin_39593593的博客 158

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++的继承与多态

1、继承的三种方式:public、private、protected 2、继承中的构造函数和复制控制成员 (1)派生类的构造函数 (2)复制控制和继承 3、虚函数和多态 (1)virtual和虚函数 (2)派生类到基类的转换 (3)纯虚函数 (4)虚函数可以是私有的吗? 4、构造函数和析构函数和虚函数关系 (1)构造函数可以为虚函数吗? (2...

蓬莱道人的博客 671

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++ Primer学习-第15章 面向对象编程

15.1 面向对象编程:概述 在C++中,基类必须指出希望派生类重新定义那些函数,定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为学虚函数。 15.2 定义基类和派生类 在C++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这一事实是动态绑定的关键。用引用(或指针)调用

Blunt的专栏 917

类---继承

1. 基类和派生类 c++中的继承:从既有类(基类)产生新类(派生类) 1.1 派生类的生成步骤 吸收基类的成员 改造基类的成员 新增自己的成员 1.2 派生类的局限 数据成员可以完全吸收,但成员函数不能 不能被继承:构造、析构函数、基类重载的operator=/new/delete函数、友元关系 1.3 派生方式 派生方式 基类中访问权限 派生类访问权限 派生类对象访问权限 public public public 可以直接访问 protecte

qq_40250321的博客 605

c++ primer阅读笔记-15章-4

15.4. 构造函数和复制控制 1、构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员。 2、

u011779269的专栏 504

c++派生类转换为基类与public、protected、private继承的关系

在《c++primer第四版中文》中p579,对“派生类到基类转换的可访问性”讲的比较模糊,于是用visual studio 2008花了四个小时把大部分能想到的情况都试验了一下,得出如下结果。 这里的后代类指的是由基类派生的派生类派生出来的类。也就是类层次中的第三层。 当为public派生时:  派生类定义体中:   构造函数中:    构造函数体中不能定义派生类对象(虽然能通过编

u012719556的专栏 1299

学堂在线C++程序设计第九章学习笔记

学堂在线C++程序设计第九章学习笔记 继承与派生 继承的基本概念和语法 继承与派生 继承与派生是同一过程从不同的角度看 保持已有类的特性而构造新类的过程称为继承 在已有类的基础上新增自己的特性而产生新类的过程称为派生 被继承的已有类称为基类 派生出的新类称为派生类 直接参与派生出某类的基类称为直接基类 基类的基类甚至更高层的基类称为间接基类 继承的目的 实现设计与代码重用 派生的目的 当新的问题出现,原有程序无法解决时,需要对原有程序进行改造 单继承时候派生类的语法 class 派生类名:

大头讲架构的博客 229

C++ 类的学习(四):继承、友元

只能通过基类的非private函数成员(public、protect)才能访问。派生类不继承基类的构造函数、析构函数和赋值运算符,但他们仍存在于基类中。基类中的private数据成员,派生类中的成员函数不能访问。类的protect成员只能被类的成员函数和友元函数访问。基类的protect成员可以被派生类的函数成员访问。基类的构造总是先于派生类。

hd51cc的博客 243

C++面向对象编程

15.3转换与继承 15.3.1 派生类到基类的转换 1.引用不同于转换对象 1.将对象传递给希望接受引用的函数时,引用直接绑定到对象,看起来再传递对象,实际上实参是对该对象的引用,对象未被复制。转换不会改变原派生类对象。 2.将派生类对象传递给希望接受基类类型对象的函数时(不是引用),情况完全不同,形参是固定的,--在编译和运行时形参都是基类类型对象。如果用派生类型对象调用这种函数时,则...

weixin_39137699的博客 253

转换与继承--《C++ primer》笔记

转换与继承--《C++ primer》笔记 本文转载自转换与继承--《C++ primer》笔记   派生类到基类的转换 基本上可以直接转,就提取派生类的基类部分就行了,其余的“切掉”(忽略) 01.//派生类和基类的转换,想把派生类对象转成基类对象,基本上是各种直接间接的“复制”,通过copy-constructor 和operator=等形式,把派生类对象的基类部分赋予新对象 0

lanxiajun的专栏 506

Visual C++ 2008入门经典 第九章类的继承和虚函数

// 第九章类的继承和虚函数 //.cpp: 主项目文件。 //1 继承如何与面向对像的编程思想适应 //2 根据现有类定义新类 //3 使用protected关键字为类成员指定新的访问特性 //4 如何使某个类成为另一个类的友元 //5 虚函数及其使用方法 //6 纯虚函数 //7 抽像类 //8 虚析构函数的概念,何时时使用虚析构函数 //9.2 类的继承 /...

weixin_34238633的博客 141

C++ primer札记10-继承

包。继承,多态性C++的三个基本概念,在这里,我们重点总结继承的东西 1 类派生列表 类派生列表中指定一个派生类继承基类,来自列表与一个或多个基类如: class B : public A1,protected A2,private A3 可是单继承时最常见的,多继承不多见 2 派生类的定义 派生类继承时,会包括父类的全部成员。即便私有成员不能被訪问。父类中的虚...

weixin_34387284的博客 134
上一篇: C++继承方式与成员访问规则
下一篇: C++派生类与基类的转换
临江仙
博客等级 码龄16年 991粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值