C++中头文件在源文件中总显示未定义

来源:互联网 发布:osi网络模型 编辑:程序博客网 时间:2024/05/17 23:23

学习c++中的一点小问题:

不知不觉中到了大二,进入了计算机学院,接触面向对象编程也有一个多月了,可是每当我创建一个类时,总是会提示这个类未定义,同时Error一般都是10+或者是4个,以前总是乱改,或者是到网上乱差一通,没有反思自己知识点的掌握,今天重新看了一遍老师的PPT以及书本,终于创建成功了,说了这么多现在就来记录确却的问题吧!
1.粗心大意,连class后面的';'都能忘记,也是服了自己。
2.第一个问题还不是主要问题,主要问题是构造函数、默认构造函数、转换构造函数的区别(拷贝构造、深拷贝、赋值、深赋值等以后踩坑了再记录)
构造函数:
Ø构造函数没有返回类型(函数体内可以使用return;语句)
Ø函数名与类名相同
Ø可以没有或有一个或有多个参数
Ø可以被重载(以方便多种场合、多种条件下创建对象)!important
默认构造函数:不需要实参进行初始化的构造函数被称为默认构造函数,倘若仍需要默认构造函数,则需要重载默认构造函数,常见做法:设计所有参数均带默认值的构造函数,不提供实参时即为默认构造函数
转换构造函数:带一个实参的构造函数
具体判别:没有实参 默认构造函数
有实参    一个 根据实参类型在转换构造函数和构造函数里选择   多个   构造函数
ps:函数定义一定不能带默认值,声明时才能带,调用时要依据定义调用实参
RMB类代码
//RMB.h#ifndef RMB_H#define RMB_Hclass RMB{public:RMB(int y=0,int j=0,int f=0);//默认构造函数RMB(double value);//构造函数函数重载void show() const;//显示金额private:int yuan,jiao,fen;};#endif
//RMB.cpp#include "RMB.h"#include<iostream>using namespace std;RMB::RMB(int y,int j,int f){yuan=y;jiao=j;fen=f;}RMB::RMB(double value){yuan=int(value);jiao=int((value-yuan)*10);fen=int((value*100-yuan*100-jiao*10));}void RMB::show() const{cout<<yuan<<jiao<<fen<<endl;}

//main.cpp#include "RMB.h"#include<iostream>using namespace std;int main(){RMB r1,r2(2.36),r3(5,9,8);r1.show();r2.show();r3.show();return 0;}
注意空格class;   #endif   RMB.cpp最后一行    main.cpp最后一行 都要有空格不然会有warnings



原创粉丝点击