首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++如何在类方法中调用构造函数参数

在C++中,类方法可以通过构造函数参数来初始化类的成员变量。要在类方法中调用构造函数参数,可以使用以下步骤:

  1. 在类的定义中,声明一个构造函数,并在参数列表中定义所需的参数。例如,假设我们有一个名为"Person"的类,构造函数需要两个参数:姓名和年龄。
代码语言:txt
复制
class Person {
public:
    Person(string name, int age);
    // 其他成员函数和成员变量
};
  1. 在类的实现文件中,定义构造函数,并使用参数列表初始化成员变量。
代码语言:txt
复制
Person::Person(string name, int age) : mName(name), mAge(age) {
    // 构造函数的其他逻辑
}
  1. 在类方法中调用构造函数参数。可以直接使用构造函数参数来初始化类的成员变量,或者在类方法中创建一个新的类对象并传递构造函数参数。
代码语言:txt
复制
void Person::printInfo() {
    cout << "姓名:" << mName << endl;
    cout << "年龄:" << mAge << endl;
}

void someFunction() {
    // 创建一个Person对象,并传递构造函数参数
    Person person("张三", 25);
    person.printInfo();
}

在上述示例中,我们通过构造函数参数初始化了Person类的成员变量,并在类方法"printInfo()"中调用了构造函数参数来打印人员信息。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:云服务器(https://cloud.tencent.com/product/cvm)
  • 腾讯云产品:云数据库 MySQL 版(https://cloud.tencent.com/product/cdb_mysql)
  • 腾讯云产品:云原生容器服务(https://cloud.tencent.com/product/tke)
  • 腾讯云产品:人工智能(https://cloud.tencent.com/product/ai)
  • 腾讯云产品:物联网开发平台(https://cloud.tencent.com/product/iotexplorer)
  • 腾讯云产品:移动推送服务(https://cloud.tencent.com/product/umeng_push)
  • 腾讯云产品:对象存储(https://cloud.tencent.com/product/cos)
  • 腾讯云产品:区块链服务(https://cloud.tencent.com/product/tbaas)
  • 腾讯云产品:腾讯云游戏引擎(https://cloud.tencent.com/product/gse)
  • 腾讯云产品:腾讯云直播(https://cloud.tencent.com/product/css)
  • 腾讯云产品:腾讯云点播(https://cloud.tencent.com/product/vod)
  • 腾讯云产品:腾讯云音视频通信(https://cloud.tencent.com/product/trtc)
  • 腾讯云产品:腾讯云音视频处理(https://cloud.tencent.com/product/mps)
  • 腾讯云产品:腾讯云音视频智能分析(https://cloud.tencent.com/product/maap)
  • 腾讯云产品:腾讯云音视频直播(https://cloud.tencent.com/product/lvb)
  • 腾讯云产品:腾讯云音视频录制与回放(https://cloud.tencent.com/product/lvr)
  • 腾讯云产品:腾讯云音视频鉴黄(https://cloud.tencent.com/product/vod_porn)
  • 腾讯云产品:腾讯云音视频鉴政(https://cloud.tencent.com/product/vod_politics)
  • 腾讯云产品:腾讯云音视频鉴黄鉴政(https://cloud.tencent.com/product/vod_porn_politics)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐(https://cloud.tencent.com/product/vod_porn_terrorism)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政(https://cloud.tencent.com/product/vod_porn_terrorism_politics)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音鉴视频(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio_video)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音鉴视频鉴图像(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio_video_image)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音鉴视频鉴图像鉴人(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio_video_image_person)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音鉴视频鉴图像鉴人鉴车牌(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio_video_image_person_plate)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音鉴视频鉴图像鉴人鉴车牌鉴车辆品牌(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio_video_image_person_plate_brand)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音鉴视频鉴图像鉴人鉴车牌鉴车辆品牌鉴车辆类型(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio_video_image_person_plate_brand_type)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音鉴视频鉴图像鉴人鉴车牌鉴车辆品牌鉴车辆类型鉴车辆颜色(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio_video_image_person_plate_brand_type_color)
  • 腾讯云产品:腾讯云音视频鉴黄鉴恐鉴政鉴违禁鉴广告鉴音频鉴OCR鉴文本鉴人脸鉴车辆鉴人体鉴动物鉴logo鉴场景鉴二维码鉴语音鉴视频鉴图像鉴人鉴车牌鉴车辆品牌鉴车辆类型鉴车辆颜色鉴车辆年份(https://cloud.tencent.com/product/vod_porn_terrorism_politics_prohibited_ad_audio_ocr_text_face_vehicle_body_animal_logo_scene_qrcode_audio_video_image_person_plate_brand_type_color_year)

请注意,以上链接仅为腾讯云相关产品的示例,具体产品选择应根据实际需求进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++ explicit禁止单参数构造函数隐式调用

1.单参数构造函数隐式调用 C++参数构造函数是可以被隐式调用的,主要有两种情形会隐式调用参数构造函数: (1)同类型对象的拷贝构造;即用相同类型的其它对象来初始化当前对象。...,编译器默认生成拷贝构造函数 cout<<objMyInt.getMyInt()<<endl; cout<<objMyInt1.getMyInt()<<endl; } 程序输出结果: 10 10 单参数构造函数在上例如下两行被调用..., MyInt objMyInt = 10; MyInt objMyInt1=objMyInt; 这种单参数构造函数被隐式调用C++是被默许的,但是这种写法很明显会影响代码的可读性,有时甚至会导致程序出现意外的错误...2.单参数构造函数隐式调用的危害 单参数构造函数隐式调用不仅仅会给代码可读性造成影响,有时会带来意外的结果。...3.explicit禁止单参数构造函数的隐式调用 在没有合适理由必须使用隐式转换的前提下,为了提高代码可读性以及避免单参数构造函数的隐式调用带来的潜在风险,建议使用explicit关键字阻止单参数构造函数的隐式调用

4.6K60

C++构造函数初始化列表 ⑤ ( 匿名对象 生命周期 | 构造函数 不能调用 构造函数 )

构造函数初始化列表 总结 : 初始化列表 可以 为 的 成员变量 提供初始值 ; 初始化列表 可以 调用 的 成员变量 类型的 构造函数 进行成员变量初始化操作 ; 初始化列表 可以 使用 构造函数...传入的 参数 ; 初始化时 , 根据定义顺序 , 先调用 成员变量的 构造函数 , 然后调用外部类构造函数 , 析构函数正好相反 ; 实例对象 的 const 成员变量 必须只能在 初始化列表 中进行...初始化 , 所有的构造函数都要进行初始化操作 ; 构造函数 不能调用 构造函数 ; 一、匿名对象 生命周期 1、匿名对象 生命周期 说明 调用 名(构造函数参数) 创建的是 匿名对象 ; 匿名对象...二、构造函数 调用 构造函数 ---- 1、构造函数 不能调用 构造函数 构造函数 调用 构造函数 是危险行为 ; 构造函数 调用 构造函数 , 并不会为本对象进行初始化操作 ; 构造函数调用方式...执行 Student 的构造函数" << endl; } 然后 , 在无参的 构造函数 , 调用 有参构造函数 ; // 构造函数 调用 构造函数 是危险行为 Student() { /

18120

C++构造函数分类 ③ ( 调用有参构造函数方法 | 括号法 | 等号法 )

一、在不同的内存创建的实例对象 在上一篇博客 【C++构造函数分类 ② ( 在不同的内存创建的实例对象 | 栈内存创建实例对象 | new 关键字创建对象 ) , 分析了 在 栈内存 和...堆内存 创建对象 的 两种情况 ; 本篇博客 , 继续分析 , 栈内存调用 有参构造函数的 两种方法 : 括号法 等号法 C++ 成员变量为 : public: int m_age; char...(18, "Tom"); 推荐的用法 : 在栈内存创建 的 实例对象 , 推荐使用 下面的方法 , 在声明的 栈内存变量名称后 , 直接使用括号 , 并传入构造函数参数 ; // 使用 括号法...有参构造函数 , 并将创建的 实例对象 赋值给 s5 变量 , 这是 C++ 对 = 等号运算符的增强 ; // 使用 等号法 调用 有一个参数的 有参构造函数 // C++ 对等号进行了功能增强...Student s5 = "K"; 二、完整代码示例 ---- 在下面的代码 , 声明 Student 时 , 定义了 : 默认无参构造函数 有参构造函数 - 1 个参数 有参构造函数 - 2 个参数

17740

C++不要在构造函数和析构函数调用函数

虽然可以对虚函数进行实调用,但程序员编写虚函数的本意应该是实现动态联编。在构造函数调用函数函数的入口地址是在编译时静态确定的,并未实现虚调用。...但是为什么在构造函数调用函数,实际上没有发生动态联编呢? 1. 不要在构造函数调用函数的原因 第一个原因,在概念上,构造函数的工作是为对象进行初始化。...当创建某个派生的对象时,如果在它的基构造函数调用函数,那么此时派生构造函数并未执行,所调用函数可能操作还没有被初始化的成员,浙江导致灾难的发生。...在Visual C++,包含虚函数对象的虚指针被安排在对象的起始地址处,并且虚函数表(vtable)的地址是由构造函数写入虚指针的。...的对象b退出作用域时,会先调用B的析构函数,然后调用A的析构函数,在析构函数~A()调用了虚函数show()。

2.7K30

【Kotlin】的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数定义成员属性 | 次构造函数 | 构造函数默认参数 )

文章目录 一、主构造函数定义临时变量 二、主构造函数定义成员属性 三、次构造函数 四、构造函数默认参数 一、主构造函数定义临时变量 ---- 在 Kotlin , 可以在 声明 时 在 名后...---- 在主构造函数 定义临时变量 , 格式为 : class 名(_临时变量名: 临时变量类型){} 在主构造函数也可以 定义成员属性 , 格式为 : class 名(var 成员属性名:..., 每个次构造函数都可以有不同的参数组合 ; 定义次构造函数后 , 必须调用构造函数 , 并且为每个主构造函数参数设置 参数值 ; 次构造函数可以实现代码逻辑 , 作为主构造函数的补充 ; 代码示例...: 下面代码 , 次构造函数 必须 调用构造函数 , name 和 age 参数必须设置默认值 name = "Jerry", age = 12 ; class Hello( // 主构造函数..., 可以不为其传递 值参 , 构造函数跳过该参数 , 其 后面的参数需要使用 参数名 = 参数值 进行赋值 ; 代码示例 : class Hello( // 主构造函数, 直接在主构造函数定义属性

4.7K20

最全面的c++构造函数高级使用方法及禁忌

本篇文章讲解c++构造函数的高级用法以及特殊使用情况。 1....实际上,我们这里首先应该思考一下初始化列表和赋值有什么区别,初始化列表其实相当于调用一次构造函数,而赋值呢,是首先调用一次构造函数,然后再调用赋值函数,相当于先声明,然后又定义一次,但我们初次接触c++...怎么防止对象被拷贝和赋值 防止对象被拷贝和赋值,换句话说,就是不能调用的拷贝函数和赋值运算符重载函数,我们首先能想到的就是把这两个函数声明为private的,或者私有继承一个基,而到了c++11...,再次执行,结果如下: call CPtr constructors call CSon constructors call virtual function 也就是说,对于子类而言,在构造函数调用函数也是调用的它自身的函数...综上,不论是基还是继承,他们的构造函数中都可以直接调用函数

1.6K30

C++同时存在继承以及组合时候,构造函数构造顺序

C++的一大特点就是面向对象,面向对象主要就是的一些相关特性(封装、继承、多态)。 那么在的继承以及的成员属性包含其他实例对象的时候,构造函数构造顺序到底是怎么样子的呢?...相信大家都知道,实例化对象首先需要的是调用自身的构造函数进行分配内存空间之后进行实例化对象,这就是构造函数的整个过程(两步)。...那么当一个对象既包含了继承关系同时也在自身的成员属性包含了其他对象的实例化的时候,那么这时候实例化该类的对象时候,构造函数的顺序会是怎么样子的呢?下面来看看这一段代码吧。...<< "C 构造函数" << endl; } private: B b; // C组合有B对象成员 int i_c; }; int main() { C...A 构造函数 B 构造函数 C 构造函数 构造顺序是首先构造继承的父,其次构造组合的实例对象,最后才是构造自己本身。

1.1K20

【Groovy】Groovy 方法调用 ( Groovy 构造函数为成员赋值 | Groovy 函数参数传递与键值对参数 | 完整代码示例 )

文章目录 一、Groovy 构造函数为成员赋值 二、Groovy 函数参数传递与键值对参数 三、完整代码示例 一、Groovy 构造函数为成员赋值 ---- Groovy 没有定义构造函数 ,...但是可以使用如下形式的构造函数 , 为 Groovy 设置初始值 ; new 名(成员名1: 成员值1, 成员名2: 成员值2) 顺序随意 : 成员的顺序随意 , 没有强制要求 , 只需要 成员名...---- 在 Groovy 的构造函数 , 可以使用 成员名1: 成员值1, 成员名2: 成员值2 类型的参数 , 这是键值对 map 类型的集合 ; 但是对于普通的函数 , 不能使用上述格式 ,...如果出现 变量名1: 变量值1, 变量名2: 变量值2 样式的代码 , 会将上述参数识别为一个 map 集合 ; 定义了一个 Groovy , 其中定义的方法接收 2 个参数 ; class Student...; 必须使用如下形式 , 才能正确执行 printValue 函数 ; // 传入的 a: "Tom", b: 18 是第一个参数 , 这是一个 map 集合 // 第二个参数是 "Jerry" 字符串

9K20

C++】继承 ⑧ ( 继承 + 组合 模式的对象 构造函数 和 析构函数 调用规则 )

一、继承 + 组合 模式的对象 构造函数和析构函数调用规则 1、场景说明 如果一个 既 继承了 基 , 又 在 维护了一个 其它类型 的 成员变量 , 那么 该类 的 构造 与 析构 , 就需要涉及到... 本身 的 构造函数 和 析构函数 , 父构造函数 和 析构函数 , 成员变量 的 构造函数 和 析构函数 ; 2、调用规则 在 继承 + 组合 的情况下 , 构造函数 与 析构函数 调用规则如下...: 构造函数 : 父 -> 成员 -> 自身 ; 首先 , 调用 构造函数 ; 然后 , 调用 成员 构造函数 ; 也就是 成员变量 类型的 构造函数 ; 最后 , 调用 自己 构造函数 ;...析构函数 ; 最后 , 调用 析构函数 ; 二、完整代码示例分析 ---- 1、代码分析 在下面的代码 , 继承关系 : C 继承了 B class C : public B , B ...<< "C 析构函数调用" << endl; } public: int z; D d; }; 可根据下面的调用规则 , 分析出 C 对象 , 涉及到的 父构造/析构函数 , 自身构造/析构函数

15710

创建子类对象时,父构造函数调用被子类重写的方法为什么调用的是子类的方法

void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建A对象的时候父调用子类方法...但是:创建B对象父调用方法? 答案: 当子类被加载到内存方法区后,会继续加载父到内存。...如果,子类重写了父方法,子类的方法引用会指向子类的方法,否则子类的方法引用会指向父方法引用。 如果子类重载了父方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父方法,则方法引用会指向父方法。 当子类对象创建时,会先行调用构造方法构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译的时候,父构造方法调用方法参数已经强制转换为符合父方法参数了。 上边代码在编译前已经转换为下面这个样子的了。

6.1K10

C++】拷贝构造函数调用时机 ② ( 对象值作为函数参数 | 对象值作为函数返回值 )

另外一个 实例对象 ; // 将一个对象赋值给另外一个对象 // 自动调用拷贝构造函数 Student s2 = s1; ③ 对象值作为函数参数 : 的实例对象 以值的方式 传递给函数 , 不是以...---- C++ 语言中的 拷贝构造函数C++ 的 特殊构造函数 , 其作用是 创建一个新的 实例对象 , 作为现有实例对象的 拷贝后的副本 ; 拷贝构造函数 的 主要作用 是初始化新创建的对象..., 使其内容与原对象完全相同 ; 二、对象值作为函数参数 ---- 1、拷贝构造函数调用情况说明 的实例对象 以值的方式 传递给函数 , 不是以 指针 或 引用 的方式 ; 这种情况 是 以 的...对象值作为参数 void fun(Student s) { } 如果调用函数 , 需要拷贝实参 , 将 实参的副本值 , 也就是对象值 传递给函数形参 , 这个过程需要调用 Student 的 拷贝构造函数...; 然后 , 将创建的实例对象 传递给 fun 函数 , 传递时由于传递的是 对象值 , 需要拷贝对象副本 , 拷贝副本时会自动调用 Student 的 拷贝构造函数 ; 调用参数构造函数 调用拷贝构造函数

17120

C++构造函数初始化列表 ② ( 构造函数 为 初始化列表 传递参数 | 嵌套情况下 的 构造函数 析构函数 执行顺序 )

, B 的 有参构造函数 , 传入了 3 个参数 , 这三个参数都不在函数体中使用 , 而是在 参数列表中使用 , // 构造函数参数可以作为 B(int age, int ageOfA,...; m_a(ageOfA, heightOfA) 表示调用 A 的有参构造函数 , 传入的 2 个参数分别是 构造函数的 int ageOfA, int heightOfA 两个参数 ; 代码示例 :..., A 定义了 2 个参数的 有参构造函数 ; B 定义了 无参构造函数 , 但是在该 无参构造函数 , 定义了函数列表 B() : m_age(10), m_a(10, 150) , 在该函数列表..., 执行了 A 的构造函数 ; B 还定义了 有参构造函数 , 接收 3 个参数 , 分别作为 m_age 成员的值 , 和 A 类型成员对象的 有参构造函数 的 2 个参数 , 这是 使用了...: 析构函数构造函数 的执行顺序 相反 ; 2、代码示例 - 构造函数执行顺序 下面的代码 , 在 B 定义 A 类型 成员变量 ; 执行构造函数时 , 先调用 A 的构造函数 , 再调用

19530

C++核心准则C.82:不要在构造函数或析构函数调用函数

C.82: Don't call virtual functions in constructors and destructors C.82:不要在构造函数或析构函数调用函数 Reason...到目前为止,被调用函数应该只属于构造对象本身,而不是可能存在于派生的某个覆盖函数。那样做非常难理解。...参考工厂函数以便了解如何达成调用派生功能的效果而不必承担引起未定义行为的风险。...从构造函数和析构函数调用函数并不是本身有什么错误。这种调用的语义是安全的。然而,经验表明这样的调用很少是必须的,很容易扰乱维护者,如果被新手使用会成为错误源。...提示来自构造函数或析构函数的虚函数调用

74250

C++】泛型编程 ⑦ ( 模板常用用法 | 模板声明 | 模板调用 | 模板作为函数参数 )

一、模板基础用法 1、模板声明定义 上一篇博客 , 【C++】泛型编程 ⑥ ( 模板 | 模板语法 | 代码示例 ) 讲解了模板的基础语法 , 模板声明如下 : // 声明模板 template...具体的 , 定义 具体的 变量 ; MyClass myInt(10); 3、模板做函数参数 模板 作为函数参数 , 形参 必须是具体类型 , 也就是 模板 的泛型类型必须声注明 ;...下面的 fun 函数 , 接收模板作为参数 , 模板的 泛型类型 需要被注明 ; // 模板对象作为函数参数 // 形参必须是具体类型 // 模板的泛型类型必须声注明 void fun(MyClass...这个可以接受一个类型参数T , 并创建一个具有该类型的成员变量的对象 ; MyClass是一个模板 , 该模板 接受一个 泛型类型参数T , 泛型类型参数 T 在的许多地方都会用到 , 在定义了一个...T 类型的成员变量 value , 以及一个接受T类型参数构造函数 , 在printValue函数 , 打印 value 的值 ; template 是模板声明 , 告诉编译器我们将在后面定义一个模板

4000

C++】泛型编程 ⑦ ( 模板常用用法 | 模板声明 | 模板调用 | 模板作为函数参数 )

一、模板基础用法 1、模板声明定义 上一篇博客 , 【C++】泛型编程 ⑥ ( 模板 | 模板语法 | 代码示例 ) 讲解了模板的基础语法 , 模板声明如下 : // 声明模板 template...具体的 , 定义 具体的 变量 ; MyClass myInt(10); 3、模板做函数参数 模板 作为函数参数 , 形参 必须是具体类型 , 也就是 模板 的泛型类型必须声注明 ;...下面的 fun 函数 , 接收模板作为参数 , 模板的 泛型类型 需要被注明 ; // 模板对象作为函数参数 // 形参必须是具体类型 // 模板的泛型类型必须声注明 void fun(MyClass...这个可以接受一个类型参数T , 并创建一个具有该类型的成员变量的对象 ; MyClass是一个模板 , 该模板 接受一个 泛型类型参数T , 泛型类型参数 T 在的许多地方都会用到 , 在定义了一个...T 类型的成员变量 value , 以及一个接受T类型参数构造函数 , 在printValue函数 , 打印 value 的值 ; template 是模板声明 , 告诉编译器我们将在后面定义一个模板

23540

C++】多态 ⑨ ( vptr 指针初始化问题 | 构造函数 调用函数 - 没有多态效果 )

会自动 被 C++ 编译器 存储到 " 虚函数表 " , 中会自动添加一个 " vptr 指针 " 成员变量 指向 虚函数表 ; 2、vptr 指针初始化时机 对象的 vptr 指针 指向 虚函数表... 调用函数 , 则 没有 多态效果 ; 在 父构造函数 , 调用了 父的 虚函数 ; 此时 , 如果 创建 子类对象 , 执行 父构造函数 , 仍然调用 的虚函数 , 子类的虚函数...没有被调用 , 说明 构造函数 执行期间 , 多态没有生效 ; 参考 【C++】继承 ⑧ ( 继承 + 组合 模式的对象 构造函数 和 析构函数 调用规则 ) 博客构造函数 调用规则 : 构造函数...父构造函数 调用 fun 虚函数 , 只能调用本身的 fun 函数 , 此时 vptr 指针没有指向 虚函数表 , 虚函数表未生效 , 只能调用的 fun 函数本身 ; 父构造函数...调用完毕后 , vptr 指针 才指向 父的 虚函数表 ; 然后 , 调用 子类 的构造函数 , 此时在 子类构造函数 调用 fun 虚函数 , 只能调用 子类本身的 fun 函数 , 此时 vptr

21520
领券