类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。类可以用来表达那些不能直接和内置类型建立自然映射关系的逻辑抽象。
访问控制限定符
C++类中的访问控制限定符包括:public、private、protected。关键字public表示公有成员,公有成员在类的外部是可以直接访问的。关键字private表示私有成员,只有自己可以访问。而protected关键字表示保护成员,只有自己和自己的子类可以访问。
类和结构体的区别:(这是常考的笔试面试题目)
1、类的访问控制属性在默认情况下是私有的属性;
2、结构体的访问控制在默认情况下是公有的属性;
class Student{ int age;};等价于class Student{private:int age;};
struct Student{int age;};等价于struct Student{public:int age;};
访问控制限定符仅仅作用于类而不是对象,因此同一个类的不同成员访问类的非公有部分是没有任何障碍的。
对于不同的成员采用不同的访问控制属性体现了C++面向对象编程的多态思想。对于希望能被外部访问的成员放在共有部分;不希望被外部访问的成员放在私有部分;对于不希望被外部访问,但是可以允许被子类访问的成员,可以放在保护部分。
构造函数
构造函数的特点:构造函数与类名相同,并且没有返回值。
class Student{
public:
Student(/*构造形参表*/){
//构造函数体
};
std::string name;
int age;
};
构造函数在对象创建时被系统自动调用,构造函数在对象的整个生命周期内一定会被调用,而且仅被调用一次。
构造函数被调用的情况如下:
Student stu(name,age);//定义对象的时候会调用构造函数
Student stu = Student(name,age);
Student stu = new Student(name,age);//new对象的时候也会调用构造函数
创建对象
创建一个对象的过程(重点内容)
1、用类似malloc的机制,为包括基类子对象、成员子对象在内的整个对象分配内存空间。
2、用构造实参调用构造函数,实现如下环节:
1)依次调用该对象涉及到的各个基类的构造函数,初始化所有的基类子对象;
2)依次调用该对象涉及到的类类型成员的构造函数,初始化所有成员子对象;
3)执行该类的构造函数的函数体代码;