#include “stdafx.h”
//C++访问类的私有成员变量的方法:
//方法1:set/get接口
class E
{
int i;
//方法2:友元类
class F
{
int i;
//方法3:友元函数
class H
{
int i;
两道问答题:
//在声明类中的构造函数、析构函数、纯虚函数、静态成员函数、非静态的成员函数以及全局函数作为类的友元函数时,哪些可以是常量成员函数?
//只有纯虚函数、非静态的成员函数可以是常量成员函数。
//(这题有点问题,析构函数可以是纯虚函数,但不能是常量函数)
//1、声明带有 const 关键字的成员函数指定,函数是 “只读”函数,在它被调用的时候不会修改对象。一个常数成员函数不能修改任何非静态数据成员或调用不是常数的任何成员函数。
//若要声明常数成员函数,请在参数列表的右括号后放置const关键字。声明和定义中均要求该const关键字。
//2、构造函数和析构函数为了生成和释放成员变量,显然不能是const。
//3、静态成员函数不能是常量成员函数的原因:
//(1)const成员函数是包含this指针的。这明显不被static函数允许。
//(2)因为static成员不是任何对象的组成部分,所以static成员不能被声明为const,毕竟将成员声明为const就是承诺不会修改该函数所属对象。
//(3)const针对对象才有意义。const是基于对象的;static 是基于类的。
//4、全局函数作为类的友元函数时,它是定义在类外的普通函数,并不属于类的成员函数。
//通常类A的拷贝构造函数的原型写为A(const A&);,请问为什么参数一定要使用引用形式?使用const修饰符除了可以防止修改传递给构造函数的实参外,还有什么作用?
//A(const A& one ).当调用此拷贝构造函数时,需将参数压栈,若不使用&,就需要在栈内创建一个one的副本,而这需要用拷贝构造函数。这样就会形成递归调用。
//使用const,还允许用一个常量对象作为样本,来构造一个新的对象。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225171.html原文链接:https://javaforall.net
