原文:不要在构造函数中调用可重写的方法

原因 非密封类型的构造函数调用其类中定义的虚方法。 规则说明 调用虚方法时,直到运行时之前都不会选择执行该方法的实际类型。构造函数调用虚方法时,可能尚未执行调用该方法的实例的构造函数。 如何修复冲突 要修复与该规则的冲突,请不要从某类型的构造函数中调用该类型的虚方法。 何时禁止显示警告 不要禁止显示此规则发出的警告。应重新设计该构造函数,以取消对虚方法的调用。 示例 下面的示例演示与该规则冲突产 ...

2017-06-29 10:14 0 1638 推荐指数:

查看详情

为什么不要在构造函数调用函数

先看一段在构造函数中直接调用函数的代码:   这里的结果将打印:1。   这表明第6行执行的的是Base::Foo()而不是Derive::Foo(),也就是说:虚函数构造函数“不起作用”。为什么?   当实例化一个派生类对象时,首先进行基类部分的构造,然后再进行派生类 ...

Sat Apr 28 20:57:00 CST 2012 2 14078
绝对不要在 构造函数/析构函数 调用函数

今天为了查一个重复delete的bug,在析构函数调用了一个虚函数 toString,想在对象析够前打印对象信息,结果发现打印出来全都是基类的,后来仔细研究了这个问题,先说结论: 1,绝对不要在构造函数和析构函数调用函数,他们都不是动态绑定的。 2,如果析构函数是虚函数 ...

Sun Feb 21 07:19:00 CST 2016 0 1774
Java在构造函数调用其它构造函数

在Java构造函数调用其它构造函数的方式与C++不同,需要使用this关键字,而不是像C++直接使用构造函数名来调用。 运行结果为: ...

Tue May 05 17:50:00 CST 2020 0 3769
构造函数调用另一个构造函数

直接贴代码: 优点:公共的构造器代码只需要编写一次,提高复用性 下面我们来看子类调用父类的构造函数: 注意: 1,使用super调用超类构造器的语句必须是子类构造器的第一条语句。 2,如果子类的构造器没有显式地调用超累的构造器,则自动调用超类默认(没有参数 ...

Wed Oct 30 00:58:00 CST 2019 0 712
Java -- 构造函数 & this & 方法重写方法重载的区别

JAVA: 今天总结一下构造方法、关键字、方法重载和方法重写的异同 一、构造方法构造函数) 1、构造方法的作用: 一是创建对象时调用构造方法创建对象,二是可以初始化多个属性 【学生类创建一个学生对象stu:Student stu = new Student ...

Thu Jan 24 02:44:00 CST 2019 0 635
【C++】不要在构造函数或析构函数调用函数

  这个问题来自于《Effective C++》条款9:永远不要在构造函数或析构函数调用函数 。   假设有如下代码:    现在,请分析执行下列代码调用时所发生的事情:   很明显,一个 BuyTransaction类构造器被调用。但是,首先调用 ...

Mon Aug 24 19:31:00 CST 2015 0 5023
构造函数的三种调用方法

括号法 就是直接用普通函数调用方式 显示法 将类名进行调用,然后传给一个变量 隐式方法 将参数放在等号后面进行调用 ...

Fri Sep 25 07:23:00 CST 2020 0 1287
c++构造函数调用方法

#include<iostream>using namespace std; class Base{public: Base(){ cout<<"hello"& ...

Mon Sep 02 03:43:00 CST 2019 0 1063
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM