最近在玩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;
原文链接: https://www.cnblogs.com/Wen-Man/archive/2011/10/25/2373760.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/34993
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!