注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

始めの一歩

不是世界变得无聊了,而是你变成了无聊的人……

 
 
 

日志

 
 

【C++】技巧 1 -- 关于类的构造函数的用法  

2012-10-19 17:30:25|  分类: FateのC/C++の技 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

对于 C++ 的类来说,构造函数可以隐含,也可以显式给出,其中构造函数的形参还可以给出默认值;定义类变量时,可以给出初始化数据,也可以不给出…………于是 up 就乱了…………在此给出种种测试报告,用于备份…………

 

1、无构造函数:

#include <iostream.h>

class A {
public:
    int a,b;
};

void main (void)
{
    A s1;                                       // 系统隐式给出构造函数:A (void) { }
    cout<<s1.a<<' '<<s1.b<<endl;           // 但是没有给 a,b 赋值,实测显示:-858993460 -858993460

    A s2(1,2);
    /*本意是想给 a,b 赋初值 1,2,但是由于隐式构造函数的参数表是 void,因此,此处编译出错!*/
}

 

2、无参构造函数:

#include <iostream.h>

class A {
    int a,b;
public:
    A (void) {
        a = 1;
        b = 2;
        cout<<a<<' '<<b<<endl;
    }
};

void main (void)
{
    A s1;

    A s2(3,4);        // 同样编译出错!原因同上
}

 

3、带默认参数的构造函数:

#include <iostream.h>

class A {
    int a,b;
public:
    A (int x = 1, int y = 2) {
        a = x;
        b = y;
        cout<<a<<' '<<b<<endl;
    }
};

void main (void)
{
    A s1;                  // 调用上面的构造函数,使用初始值 1,2

    A s2(3,4);          // 调用上面的构造函数,使用定义值 3,4
}

 

4、带默认参数的构造函数 + 重载的构造函数:(慎用)

#include <iostream.h>

class A {
    int a,b;
public:
    A (void) {           // 两个构造函数,重载使用,但是此处出现“二义性”,因此,编译出错
        a = 3;
        b = 4;
    }
    A (int x = 1, int y = 2) {
        a = x;
        b = y;
        cout<<a<<' '<<b<<endl;
    }
};

void main (void)
{
    A s1;                 // 此处出现“二义性”,因此,编译出错

    A s2(3,4);         // 此处使用第二个构造函数,因此,编译通过
}

 

5、正确的构造函数重载:

#include <iostream.h>

class A {
    int a,b;
public:
    A (void) {
        a = 3;
        b = 4;
    }
    A (int x, int y) {
        a = 1;
        b = 2;
        cout<<a<<' '<<b<<endl;
    }
};

void main (void)
{
    A s1;

    A s2(3,4);
}

  评论这张
 
阅读(113)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018