只要父类中的private成员,不管是什么继承方式,儿子都访问不了
如果是公有(public)继承,儿子中的访问控制权限保持不变
如果是保护(protect)继承,儿子中父亲中除了private成员,其余在儿子中都是protected
如果是私有(private)继承,儿子中的父亲除了private成员,其余在儿子中都是private成员
三看原则 :
1.看调用的成员变量是在类的内部还是类的外部
2.看儿子继承方式
3.当前变量在儿子中的变量在父亲中的访问控制权限
#类的兼容性原则#
子类对象可以当做父类对象使用
子类对象可以直接赋值给父类对象
子类对象可以直接初始化父类对象
父类指针可以直接指向子类对象
父类引用可以直接引用子类对象
为什么要用友元函数(friend)?
成员函数在执行功能的时候,如果需要多次访问类的私有成员,这时候就需要多次进栈出栈操作,内存占有率高,为了优化程序,提高内存使用效率,所以采用友元函数,目的是赋予函数能够直接访问类的私有成员的功能。
类为什么需要成员函数?
class Cricle:
{
public:
double r;
double area=pirr;
double pi=3.1415926;
}
int main(){
Circle r1;
cin>>r1;
cout<<r1.area<<endl;
return 0;
}
程序开始先为各成员开辟内存空间,然后初始化,主程序在给r1赋值时候,其并没有传入pirr中,所以我们需要用成员函数讲r1值代入面积计算公式中,并返回计算的面积给成员函数,这样我们通过直接调用成员函数就能够取得面积值。
inline内联函数
用关键字inline声明的函数能够代替宏代码片段
内联函数由 编译器处理 ,直接将编译后的函数体插入调用的地方
宏代码片段 由预处理器处理 ,进行简单的文本替换,没有任何编译过程
内联编译限制:
不能存在任何形式的循环语句
不能存在过多的条件判断语句
函数体不能过于庞大
不能对函数进行取址操作
内联声明必须在调用语句之前
C++中的宏
宏又称宏替换、宏代替。
格式: #define 标识符 字符串
预处理(预编译)工作也叫宏展开:将宏名替换为字符串
宏的用处:可以提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改
注意:1.“”内不会被宏替换。 2.宏定义前面的必须是合法的用户标识符