查看: 2277|回复: 3
收起左侧

[学C/C++] 关于extern的问题 c++

|只看干货 |刷题, 学c/c++

分享帖子到朋友圈
jpjerry | 显示全部楼层 |阅读模式
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (7)
 
 
0% (0)    👎

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
// simple.h
#ifndef Simple
#define Simple
#include<iostream>

using namespace std;

class simple
{
    int num;
    static int i;
public:
    simple(){ num=1; i++;cout<<"this is inside the constructor of "<< i <<"
simple"<<endl;}

};

int simple::i=0;

class simple1  //和simple类几乎相同,constructor函数多了个形参 int k,其它一

{
    int num;
    static int i;
public:
    simple1(int k):num(k){ i++;cout<<"this is inside the constructor of "
<<
i <<" simple1"<<endl;}
};

int simple1::i=0;
#endif

// another.cpp
#include "exe11.cpp"
#include "simple.h"
using namespace std;
extern simple k;
//extern simple1 s;
extern int a;

void main()
{
    cout<<"a= "<<a<<endl;

}

//exe11.cpp
#include "simple.h"

simple k;
simple1 s(3);
int a=9;

先不考虑绿色字体代码,运行结果是
this is inside the constructor of 1 simple
this is inside the constructor of 1 simple1
this is inside the constructor of 2 simple
a=9

红色代码extern simple k;本意只是想做声明,为了使用在exe.11中已经定义的k,

又定义一个simple类k,    并且不与 exe11.cpp中的k发生冲突, 让我很奇怪。 求

答。

若考虑绿色部分代码,会有这么一个错误,
error C2512: 'simple1' : no appropriate default constructor available
可我明明也只想声明,不想定义,难道声明的语法不对? 求解答

谢谢!

上一篇:Google: 最大无障碍点子矩阵
下一篇:Google : find the number of ways the students could be ranked
头像被屏蔽
wwwyhx 2011-7-6 13:56:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

stephenK 2011-7-9 15:01:17 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (25)
 
 
0% (0)    👎
回复 2# wwwyhx

见过一次 include cpp的。。
回复

使用道具 举报

头像被屏蔽
wwwyhx 2011-7-10 17:24:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

>
快速回复 返回顶部 返回列表