首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

构造函数的一个误会

2013-03-29 
构造函数的一个误解先看一段代码。#include iostreamusing namespace stdclass A {public:A() {cout

构造函数的一个误解

先看一段代码。

#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()

热点排行