之所以会摘录下面文章,除了下面的知识点自己没有掌握之外,还因为在编写代码时,出现了诸如下面的错误: 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;
}
//本程序只实现析构函数,其他五个都是只声明不定义,
//这样能确保:系统不会再产生已声明过的函数,但是又不能调用,因为没有定义。
//这就达到了:显式地禁止隐式生成的函数的目的。