.h和.cpp

c++

a.h

 

//a.h
void fun1();  头文件中只放声明


b.cpp

 

//放a.h中fun1的定义
#include<iostream>
void fun1(){
cout<<“hello world!"<<endl;
}


c.cpp

//main函数
#include"a.h"//预处理指令把a.h里的代码插入
int main{
fun1();
}


compile 会把b.cpp和c.cpp变成.obj/.o,link过程会找到fun1的定义

!   如果在a.h中写 int a-建立存储空间 ,b.cpp中写int a=3会出错,int a为定义,那么重复定义,在a.h中声明a用extern int a-不建立存储空间

 

一般的类可以声明与定义分开

a.h                                  //声明类

class complexa
{
private:
double real;
double imag;
public:
complexa(double r,double i);
double abscomplexa();
};


 

b.cpp                                    //类的实现 需加入#include"a.h" 否则编译时不知道complexa是什么

#include<math.h>
#include"a.h"
complexa::complexa(double r,double i){
real=r;
imag=i;
}
double complexa::abscomplexa(){
double t;
t=real*real+imag*imag;
return sqrt(t);
}


 

main.cpp

#include"a.h"
#include<iostream>
using namespace std;
int main(){
complexa A(1.1,2.2);
cout<<A.abscomplexa()<<endl;
return 0;
}


模板类会出错

原来这个跟模板的编译模型有关
1.包含编译模型:编译器必须看到用到的所有模板的定义。就是把模板类的声明和定义放在一起,如头文件中。
2.分离编译模型:是指模板类声明在头文件中,而成员函数和静态数据成员放在.c/.cpp中,这时需要用C++关键字export指明
 
 
 
 在.h中加入
#ifndef S-------xxx_H_H
 
#define S--------xxx_H_H
 
#endif
防止类的重复定义
 
 
 
 
     
 
 
 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值