最近在玩C++,想找个地方把自己学习的感悟记录下来。于是就想到了这个地方,这篇文章会不断的更新,希望自己能坚持......
一 关于指向对象成员函数的指针的问题
定义指针:数据类型名 (类名::*指针变量名)(参数列表);
指针赋值:指针变量名=&类名::成员函数名;//千万不要把函数的参数列表带上
引用:(对象名.*指针变量名)(参数列表);//前面那对括号一定要
另外,只有公用成员才能这样通过指针来访问
eg.
class test
{
public:
int getarea();
......
};
test A;
int (test::*p)();
p=&test::getarea;//不要写成:p=&test::getarea();
cout<<(A.*p)()<<endl;//不要写成:cout<<A.*p<<endl;或cout<<A.*p()<<endl;
//
二 关于纯虚函数
一般形式:
virtual 函数类型 函数名 (参数列表) =0;
注意问题:
1.一个类中含有纯虚函数,叫做抽象类.抽象类只能被继承,不能被实例化.
//eg.
现在我有一个抽象类circle,那么我就不能在类外出现这样的语句: circle A;
2.纯虚函数在派生类中必须重载,否则不能通过.并且重载时,函数的形式要与声明纯虚函数时一样.
//eg.
virtual double get_a ()const=0;
virtual double get_a() //错误,要加上const
{return 3.14;}
三 申明指针必须初始化
eg. char *a;
cin>>a; //错误,由于指针没有初始化,很容易跑飞
应该这样:
char *a=new char[10]; //a只能存储10个字符
cin>>a;