c++中的声明与定义,你知道吗?

     声明与定义在很多地方也可以表现为声明与实现 比如在vs2003开发环境中的右键菜

单中有两个选项, "转到定义" 和 "转到声明", 通过这两个菜单明显就可以看到他们的区别

, 声明就是表明在这个程序中存在这样的变量或者函数, 定义就是变量或者函数的具体内容

, 可以给变量符初值等.区分它们.

   类的成员声明与定义. 它们可以一次进行.如

class cls
{
  cls(){};
 ~cls(){};
  int a, b;
  void init(){a = 1, b = 0}; //同时声明与定义
};
  声明与定义也可以分着来:
class cls
{
  cls(){};
 ~cls(){};
  int a, b;
  void init(); //声明
};

void cls::init(){a = 1, b = 0};//定义

   如果函数与变量不属于某个类而是全局的。假设有变量int i, 与函数void test();则两

者的声明与定义为:
   声明: extern int i;
          extern void test()或void test();
   定义: int i;
         void test(){};
在下面三中情况下。
 1, 只有声明没有定义.如果没有被调用则编译连接都可以通过,如果被调用了则出现连接错

误,因为编译器找不到变量或函数的实体。
 2, 只有定义没有声明部分, 则变量与定义只能在本cpp文件中使用.
 3, 两者都有,则变量与函数都可以被任一包含该头文件的cpp文件使用。
总结:
   1. 声明与定义也可以一步做到如:extern int i = 0;
   2. 也就是说需要使用一个变量或者函数那它一定要被定义到,否则会产生连接错误。
   3. 如果两个cpp文件同时include一个定义如int i;则会出现重复定义的连接错误。用

extern int i;可以解决问题.
   4. 声明时,不给程序分配空间,只有定义后才分配空间。
   5.在头文件中,最好只用声明,不用定义。在cpp文件中去定义。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值