赞
踩
类: 对某一事物的抽象(例如下图的 猫科动物这一抽象群体)
对象:某一类事物的个体,具体且唯一(例如下图的 老虎、狮子等)
方法一:
方法二:
设:下类的方法 print_weight 假设已实现
普通对象访问
Catamount tiger; //定义了一个普通对象 tiger.weight = 200; //对象tiger的体重进行赋值 tiger.print_weight(); //打印对象tiger的体重
- 1
- 2
- 3
指针对象访问
Catamount * tiger = new Catamount; //定义了一个指针对象 tiger -> weight = 200; //指针对象tiger的体重进行赋值 tiger -> print_weight(); //打印指针对象tiger的体重
- 1
- 2
- 3
pricate(私有)
public(公有)
protecyed(保护)
若对象想要访问/操作类中的私有成员/保护成员 则应该通过公有函数 来访问/操作成员
举例:
在构造(实例化)对象时自动调用此函数,往往用来初始化对象内的成员变量
当类中没有构造函数时,编译器会自动生成一个构造函数。
针对不同的初始化方式,可以重载构造函数
只要构造函数满足重载要求就可以行成构造重载
下面是常见的构造函数 初始化列表操作代码
class A
{
public:
int a;
float b;
A(int data_1,float data_2);
};
在实例化对象的同时将其内部的相关成员变量进行赋值(任意权限:公、私、保护)
A::A(int data_1,float data_2) : a(data_1),b(data_2)
{
}
扩展:
我们已经知道了构造重载,只要其构造形参列表 不同 就可以构成重载
当该构造重载函数的形参类型为 它自己的类时,那么这个构造就是 拷贝构造
拷贝构造一般用于:主动创建对象时,用一个对象去初始化另一个对象
在销毁对象时自动调用此函数,往往用来释放对象内申请的资源
与类名相同,在前面加位取反符~。且不能有任何参数与返回值
一个类有且只有一个析构函数,所以肯定不能重载
static表示静态关键字,可以用于修饰成员变量与成员函数
修饰的成员变量属于类不属于具体的对象
静态成员使用前 必须初始化 ,否则会在linker(链接)步骤时出错
语法
在 class 中进行声明:static <类型修饰符> <变量名>
在 class 外进行初始化:<类型修饰符><类名>::<变量名> = <初始化值>
static 修饰的成员变量 属于类 不属于具体的对象,对于所有的对象是共享的,并在对象创建之前就已经产生了!
在成员函数中可以正常访问静态成员变量
关于static修饰成员变量的访问权限:
语法
static <函数返回值><函数名>(参数列表)
不能使用 this 指针,与类关联,不与对象关联,在调用静态函数时,可以在没有对象时调用
可以通过类名直接访问,不能访问非静态成员,只能访问静态成员
const成员变量只能在初始化列表中初始化
初始化后,该对象的 const成员变量的值将无法再被修改!
关于const 的访问权限
作用: 防止成员函数修改非静态成员变量的值,所以 const成员函数内部只能对静态成员变量的值进行修改
const成员函数也可以与同名非const成员函数构成函数重载,创建const对象时调用的为const修饰的成员函数
虽然只能修改静态成员,但是依旧可以访问非静态成员
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。