首页 > 代码库 > C++之菜鸟入门概念B
C++之菜鸟入门概念B
- 友元函数 格式:friend 类型 函数名(形式参数); 关键字friend
友元函数是可以直接访问类的私有成员的非成员函数
友元的作用虽减少时间开销,但它破坏了类的封装性和隐藏性
- 友元类 格式:friend class 类名; 关键字friend class
友元关系不能被继承,友元关系是单向的,不具有交换性,友元关系不具有传递性
class A{ friend class B; // 类B的所有成员函数都是类A的友元函数 }; class B{ 函数体 };
- C++头文件加.h和不加.h的区别
自己写的头文件,必须加.h。
标准的C++头文件没有.h扩展名
iostream是C++的头文件,iostream.h是C的头文件
iostream.h里面定义的所有类以及对象都是在全局空间里,可以直用cout
在iostream里面,它所定义的东西都在名字空间std里,必须加上 using namespace std才能用cout
有特殊的,C的标准库有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数
这个头文件跟C++的string类半点关系也没有,他们的功能是不同的
- 插入器(<<) 从流中输出数据
- 析取器(>>) 从流中输入数据
- 匿名对象 当对方法只进行一次调用时用
当对象对成员进行多次调用时,不能使用匿名对象,必须给对象起名字。
- 成员 在类中定义的都可称之为成员。
成员有两种 1.成员变量: 事物的属性。
2.成员函数: 事物的行为。
- 定义类的实质 就是在定义成员变量和成员函数。
必须先要对事物进行属性和行为的分析,才可以用代码来体现。
- 封装 隐藏对象的属性和实现细节 ,仅对外提供公共访问方式, 便于使用 ,提高重用性
不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。
私有仅仅是封装的一种体现形式
- 私有 权限最低 ,只有在本类中的访问有效。
类中的属性通常被私有化,并对外提供公共的访问方法。
- 私有成员 其他类不能直接创建对象访问私有成员,
只能通过本类对外提供具体的访问方式来完成对私有的访问
可以通过对外提供函数的形式对其进行访问。
- 成员变量 直接定义在类中,在这个类中有效
存在于堆内存中,随着对象的产生而存在,消失而消失。
- 局部变量 定义在方法中,参数上,语句中。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
存在于栈内存中,随着所属区域的运行而存在,结束而释放。
- 构造代码块 给所有的对象进行初始化,都调用一个代码块
只要对象一建立。就会调用这个代码块。
- 创建一个对象在内存中做了什么事
Person p = new Person();
1.指定位置的Person.class文件加载进内存。
2.执行main方法时,在栈内存中开辟main方法的空间,在main方法的栈区分配了一个变量p。
3.在堆内存中开辟一个实体空间,分配一个内存首地址值。 new
4.在该实体空间中进行属性的空间分配,并进行了默认初始化。
5.对空间中的属性进行显示初始化。
6.进行实体的构造代码块初始化。
7.调用该实体对应的构造函数,进行构造函数初始化。()
8.将首地址赋值给p ,p变量就引用了该实体。(指向了该对象)
- this 代表对象。 哪个对象调用了this所在的函数,this就代表哪个对象,就是对哪个对象的引用。
功能内部使用到调用该功能的对象,用this来表示这个对象。
- static 静态 ,修饰符 ,修饰成员(成员变量和成员函数)
实现对象中的共性数据的对象共享。可以将这个数据进行静态修饰。
被静态修饰的成员,可以直接被类名所调用 , 格式: 类名.静态方式。
静态随着类的加载而加载。而且优先于对象存在。
静态方法只能访问静态成员,不可以访问非静态成员。 非静态成员函数中可以调用静态成员。
定义静态,要明确该数据是否是被对象所共享的。
主函数是静态的。
- 静态成员 两种 //1.成员变量(数据共享时静态化)
2.成员函数 (方法中没有调用特有数据时,应定义成静态)
- 成员变量和静态变量区别
1. 成员变量 对象,实例变量,存在于堆内存
随着对象创建而存在, 随着对象被回收而消失
只能被对象所调用 对象的特有数据
2.静态变量 类, 类变量 , 存在于方法区
随着类的加载而存在,随着类的消失而消失
可以被对象调用,也可以被类名调用
对象的共享数据 ,生命周期很长。
- 静态代码块 有静态关键字标示的一个代码块区域, 定义在类中, 完成类的初始化
随着类的加载执行,只执行一次(new 多个对象就只执行一次)
若和主函数在同一类中,优先于主函数执行。
静态代码块、构造代码块、构造函数同时存在时的执行顺序:静态代码块 ->构造代码块->构造函数;
- 主函数 保证所在类的独立运行 ,程序的入口
主函数的存在,仅为该类是否需要独立运行,若不需要,主函数不用定义
C++之菜鸟入门概念B