编程过程中遇到的问题汇总1

来源:互联网 发布:linux 命令行颜色 编辑:程序博客网 时间:2024/06/04 18:36

1. & * 的作用  放在形参里 &是干什么的?

答:*是指针 &取指针的地址   放在形参里,&是一种按引用传递的方式,传递的是地址,即改变了里面的值,又使得该参数为该地址空间的别名,就是说如果是值传递,只是把值给了函数,原变量存储的值不变。而引用传递,该变量的值也变了。


2.null这个东西都什么时候哪里用?

答:C语言把它作为字符串的最后一个字符,以表示字符串到此结束."\0"    一个指针赋值为NULL,通常的说法是“将指针悬空”。这样,指针就无法再进行任何数据访问了。


3.为什么析构函数有的时候要写函数内容,有的时候就放在那里就好了?

答:如果构造函数使用new来分配内存,则析构函数将使用delete来释放这些内存。如果没有使用new,析构函数实际上没有需要完成的任务,这种情况下,只需让编译器生成一个什么都不要做的隐式析构函数即可。


4.什么时候要用友元函数,为什么很多时候重载操作符的时候经常用友元   输入输出操作符 加减法操作符一般用友元   赋值操作符用做类的成员函数是为什么呢?

答:友元有三种:友元函数 友元类 友元成员函数  通常让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限。友元函数在类中声明,但不是成员函数,不能用成员操作符来调用。

        如果要为类重载操作符,并将非类的项作为其第一个操作数,则可以用友元函数来反转操作数的顺序。

        对于加法操作符的重载:

               Time operator+ (const Time &t)const;

               friend Time operator+ (const Time &t1,const Time &t2);

        加法操作符需要两个操作数,对于成员函数版本来说,一个操作数通过this指针隐式地传递,另一个操作数作为函数参数显式地传递;对于友元版本来说,两个操作数都作为参数来传递。


5.this指针怎么用?return *this 到底return的是什么?

答:每个成员函数(包括构造函数和析构函数)都有一个this指针。this指针指向调用对象。如果方法需要引用整个调用对象,则可以使用表达式*this。在函数的括号后面使用const限定符将this限定为const,这样将不能使用this来修改对象的值。this是对象的地址,*this是指针指向的值


6.virtual是怎么用的?

答:这个是虚拟成员函数。在基类方法的声明中使用关键字virtual可使该方法在基类以及所有的派生类中是虚拟的。如果定义的类将被用作基类,则应将那些要在派生类中重新定义的类方法声明为虚拟的。

        构造函数不能是虚函数

        析构函数应该是虚函数,除非类不用做基类

        友元不能是虚函数,因为友元不是类成员,只有成员才能是虚函数

        如果派生类没有重新定义函数,将使用该函数的基类版本