常量相关
- 常量无外号
- 形参是引用,实参不能是常量
enum的实际操作
1 |
|
1 |
|
- struct所占内存大小:所有数据的大小之和。
- union所占内存大小:数据大小中最大的一个。
- union缺点:可能会产生混乱,其内部无保护机制。
- struct可以整体赋值:stu1=stu;
成员初始化列表的规则
1 | class A; |
类的友元
友元关系提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。
如果友元函数是一般函数或类的成员函数,称为友元函数;如果友元是一个类,则称为友元类,友元类的所有成员函数都自动称为友元函数。
友元函数
作用:虽然他不是本类的成员函数,但是在它的函数体中可以通过对象名访问类的私有和保护成员。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using namespace std;
class Point{
public:
Point(int x=0,int y=0):x(x),y(y){}
int getX(){
return x;
}
int getY();
friend float dis(Point &p1,Point & p2);
private:
int x,y;
};
Point::getY(){
return this->y;
}
float dis(Point &p1,Point &p2){
double x=p1.x-p2.x;
double y=p1.y-p2.y;
return sqrt(x*x+y*y);
}
int main(){
Point myp1(1,1),myp2(4,5);
cout<<dis(myp1,myp2)<<endl;
return 0;
}
友元类
同友元函数一样,一个类可以将另一个类声明为友元类。若A类为B类的友元类,则A类所有的成员函数都是B类的友元函数,都可以访问B类的私有和保护成员。
语法:1
2
3
4
5
6class B
{
...
friend class A;/*A是B的友元类,可以访问B的成员函数和私有和保护成员*/
...
}
注意:
- 友元关系不能传递
- 友元关系是单向的
- 友元关系是不被继承的
引用
定义:特殊类型的变量,可以被认为是另一个变量的别名
会直接对原内存的数据进行更改。 - 引用必须要被初始化(如果ra是a的外号,那么它就不能成为b的外号)
- 引用在c++中就是一个外号,引用就是一种共享。
- 常量无外号,注意:常量是有const关键字的,或者直接是一个数字
内联函数
内联函数并不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处
调用方式是在平常声明函数的语法前加上inline - 类内的足够简单并且不会发生异常错误的都是内联函数
- 成为内联函数足够简单的要求:没有switch…case语句,内部没有循环
作用域
作用域是一个标识符在程序正文中有效的区域 - 函数原型作用域
在函数原型声明时形式参数的作用范围就是函数原型作用域
所以可以在声明函数原型时只写类型,不写标识符 - 局部作用域
函数形参列表中形参的作用域,从形参列表中的声明处开始,到整个函数体结束之处为止
函数体内声明的变量,其作用域从声明处开始,一直到声明所在的块结束的大括号为止(一对大括号)
具有局部作用域的变量也称为局部变量 - 类作用域(类内可见)
页数:p147 - 命名空间作用域(作用范围最大)
命名空间>类作用域>块作用域
也叫全局作用域不在任何一个{}内可见性
程序运行到某一点,能够引用到的标识符,就是该出可见的标识符