`
splayx
  • 浏览: 82804 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

构造函数的一个误解

    博客分类:
  • C++
 
阅读更多

先看一段代码。

#include <iostream>

using namespace std;

class A {
public:
    A() {
        cout << "A()" << endl;
    }
    ~A() {
        cout << "~A()" << endl;
    }
};

class B : public A {
public:
    B() {
        cout << "B()" << endl;
    }
    ~B() {
        cout << "~B()" << endl;
    }
    B(int a) {
        cout << "int a" << endl;
    }
};

B func() {
    cout << "A function" << endl;
    return B();
}
int main() {
    cout << "----1----" << endl;
    B t();
    cout << "----2----" << endl;
    B();
    //B b;
    //B c(1);
    return 0;
}

 之前调用无参数的构造函数都是形如

B b;

的调用方式,有参数的就如

B c(1);

地去调用。

没试过B t();的调用方式,以为跟B t;的效果是一样的,其实不然。。

B t();相当于声明了一个返回值是B的函数,跟B的构造函数没半点关系。

所以,这段代码的输出为:

 

----1----

----2----

A()

B()

~B()

~A()

分享到:
评论

相关推荐

    关于复制构造函数的使用(C++)

    关于构造函数的问题,本文是关于构造函数的专题,集中介绍了默认构造函数,初始化列表,重点介绍了复制构造函数, 直接初始化,复制初始化,赋值,临时对象之间的关系,本文内容全面,简单易懂。 本文内容完全属于...

    java 面试题 总结

    不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)...

    超级有影响力霸气的Java面试题大全文档

    不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。  接口(interface...

    JAVA面试题最全集

    给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...

    MATLAB绘制3D隐函数曲面的方法总结-MarchingCubes.zip

    在matlab central 的 file exchange 上有一个非常优秀的绘制3维隐函数的绘图函数,叫ezimplot3。感兴趣的可以在如下链接下载:...

    JavaScript ES6中CLASS的使用详解

    js里面有许多语法的缺点:繁琐杂乱的.prototype 引用、试图调用原型链上层同名函数时的显式伪多态以及不可靠、不美观而且容易被误解成“构造函数”的.constructor。 除此之外,类设计其实还存在更进一步的问题。传统...

    深入C++对象模型(英文版)

    本书探讨了大量的C++面向对象程序设计的底层运作机制,包括构造函数,函数,临时对象,继承,虚拟,模板的实例化,异常处理,运行期类型识别等,另外还介绍了一些在实现C++对象模型过程中做出的权衡折衷.喜欢刨根问底的C++...

    进销存系统文档作业例子

    不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)...

    applied multivariate statistics

    该方法是这样的:对 个原始变量 ,通过主成分分析,取前 个主成分 ,其方差分别为 ,以每个主成分 的贡献率 作为权数,构造综合评价函数 计算出每个样品的( )综合得分,然后依这个得分的大小对所有样品进行综合...

    ReactNote:React相关库的源码分析

    :fire: :fire: :fire:对React相关代码库以及框架的源码进行了一定的分析高清大图:永久地址:链接: ://pan.baidu.com/s/1EfTWzqC4psW8kq5kYP-v9A密码:8nqr读原始码大致...常说绑定事件函数在构造函数里bind,props

    关于JAVA面试的100题及其答案

    对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...

    用实际代码演示Ruby的容易被误解的6个特性

    当您拿起一本 Ruby 参考书籍(比如 Pickaxe)或浏览 Ruby 网站时,会看到一些熟悉的构造,比如类声明、线程支持和异常处理。正当您认为自己了解 Ruby 的工作原理之时,您意识到了,您 Ruby 代码中的并发机制与 Boost...

    华为编程开发规范与案例

    话单池的一个备份指针Pool_head_1和中继计次表的头指针重合,影响到第一个中继计次表的计费。 思考与启示: 随机值的背后往往隐藏着指针问题,两块内存缓冲区的交界处比较容易出现问题,在编程时是应该注意的地方...

    Spring.3.x企业应用开发实战(完整版).part2

    4.3.2 构造函数注入 4.3.3 工厂方法注入 4.3.4 选择注入方式的考量 4.4 注入参数详解 4.4.1 字面值 4.4.2 引用其他Bean 4.4.3 内部Bean 4.4.4 null值 4.4.5 级联属性 4.4.6 集合类型属性 4.4.7 简化配置方式 4.4.8 ...

    Spring3.x企业应用开发实战(完整版) part1

    4.3.2 构造函数注入 4.3.3 工厂方法注入 4.3.4 选择注入方式的考量 4.4 注入参数详解 4.4.1 字面值 4.4.2 引用其他Bean 4.4.3 内部Bean 4.4.4 null值 4.4.5 级联属性 4.4.6 集合类型属性 4.4.7 简化配置方式 4.4.8 ...

    ASP.NET编程之道.part1.rar

    陷阱29 构造方法中调用虚方法的陷阱 陷阱30 使用值类型进行线程同步 第4章 开发人员意识中的20个常见谬误 谬误01 所有的异常都要使用try…catch语句捕获 谬误02 Web控件的Enabled功能等价于HTML控件的 disabled属性 ...

    Java2核心技术.part5

    3.1一个简单的Java应用程序 3.2注释 3.3数据类型 3.3.1整型 3.3.2浮点型 3.3.3 char类型 3.3.4 boolean类型 3.4变量 3.4.1初始化变量 3.4.2常量 3.5运算符 3.5.1自增运算符与自减...

    Java2核心技术.part3

    3.1一个简单的Java应用程序 3.2注释 3.3数据类型 3.3.1整型 3.3.2浮点型 3.3.3 char类型 3.3.4 boolean类型 3.4变量 3.4.1初始化变量 3.4.2常量 3.5运算符 3.5.1自增运算符与自减...

Global site tag (gtag.js) - Google Analytics