c++中类的申明和定义
2015-10-17 09:14
363 查看
基本类型变量是声明和定义(初始化)是同时产生的,也就是说int a,那么同时对a进行声明和初始化。
而对象,是声明与定义分开的。如类A,如果A x;就是一个声明,告诉编译器x是一个A类的对象变量,但是不进行初始化。如果以后,x= new A(); 这就是初始化,分配了空间。同样,A x=new A();这也是声明的同时初始化
还有对于函数(方法),声明只是写出函数的特性(类型 名称 参数),并没有实际的内容,是告诉编译器有这样的一个函数,在定义的时候把函数全部写清楚。
代码如下:
A.h
class A{ public: int a; int method(int,int);//这里是类成员函数的申明 //mehtod成员函数定义 };
<pre>以上代码是类的定义。 在A.cpp里的代码如下:
int A::method(int a,int b){ return (a+b); } //这里是类成员函数的定义
类成员函数的定义可以放在类的定义里面,也可以放在类定义外定义。但是一般是放在类的定义外定义
在一个类中,使用一个后面定义的类的时候,也要做申明。
比如:
class CObject;//CObject申明 struct CRuntimeClass { // Attributes LPCSTR m_lpszClassName; int m_nObjectSize; UINT m_wSchema; // schema number of the loaded class CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class CRuntimeClass* m_pBaseClass; // CRuntimeClass objects linked together in simple list static CRuntimeClass* pFirstClass; // start of class list CRuntimeClass* m_pNextClass; // linked list of registered classes }; class CObject { public: CObject::CObject() { } CObject::~CObject() { } virtual CRuntimeClass* GetRuntimeClass() const; public: static CRuntimeClass classCObject; };
其中,结构体在CObject定义前使用到了CObject了。所以,声明一下,结构体的定义才正确,否则将编译出错。
[/code]
相关文章推荐
- 进击的KFC:第三节:C语言:循环结构 循环的四个要素
- C++片段
- C++手稿:静态和全局变量的作用域
- C++ 最简单的string与wstring互相转换
- STL之set实现
- c++继承与指针
- C++基础编程----4.3表达式
- C++基础编程----4.2运算符
- Visual Studio 2015编译64位MySQL Connector/C++
- 浅析c++中的内联函数(关键字inline)
- 浅析c++中的内联函数(关键字inline)
- 神一般的C语言指针
- 关于C语言中函数调用和参数传递机制的探讨--汇编
- C语言学习—指针
- 使用对象来管理资源
- iOS开发之C语言第二天
- 【C语言】顺序表,数组
- 编译DirextShowSDK时,BaseClasses\ctlutil.h(278) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
- C++虚基类的作用
- 初学C语言----循环作业题