reille

 


之所以会摘录下面文章,除了下面的知识点自己没有掌握之外,还因为在编写代码时,出现了诸如下面的错误: undefined reference to `XXX::XXX()’

原因:如果在链接时找不到对应的o文件,则在创建一个类对象且链接时就会出现这个错误,本人是在Makefile中忘记加了,范了个低级错误!

 //显式地禁止隐式生成的函数:声明它但是不要实现它 
#include<iostream>
using namespace std;

//一个类有六个缺省的成员函数 
class A
{
public:
	A( void ); //声明缺省构造函数 
	A( const A& another ); //声明拷贝构造函数 
	~A( void ); //声明析构函数 
	A &operator = (const A& another );//声明赋值运算符 
	A *operator&( void ); //声明取址运算符 
	const A *operator & ( void ) const; //声明取址运算符[const版本] 
};

// 实现析构函数 

A::~A( void )
{
}

int main()
{
    //以上只声明缺省构造函数但是没有实现该函数,因此当用缺省构造函数创建一个对象时, 
    //编译器提示出错信息:引用了未定义的缺省构造函数 
	//A obj; // [Linker error] undefined reference to `A::A()' 

	system( "pause" );
	return 0;
}

//本程序只实现析构函数,其他五个都是只声明不定义, 
//这样能确保:系统不会再产生已声明过的函数,但是又不能调用,因为没有定义。 
//这就达到了:显式地禁止隐式生成的函数的目的。 
© 2012 velep.com | reille blog | 管理| 粤ICP备12094833号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量