C++日记

最近在玩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

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午11:54
下一篇 2023年2月8日 上午11:54

相关推荐