一、基础概念
类:用户自定义的数据类型。
对象:类类型的变量,类的实例。
类的成员:成员变量和成员函数。
成员变量:类中定义的变量。
成员函数:类中定义的函数。
定义类的代码样例:
class ClassName
{
//members
};
//类定义的右花括号后面必须有分号
类的访问修饰符:public、private、protected。
public: 类的成员可以被类外部的非成员函数访问。
private: 类的成员可以被同一个类中的成员函数访问,或者被友元函数访问,该修饰符可以禁止一些针对类中成员的高风险操作。
protected: 类的成员可以在子类中被访问。
成员函数可以引用同一个类中的所有成员变量,无论它们用哪种修饰符。
class ClassName
{
public:
//members
private:
//members
protected:
//members
};
C++编程中,结构体和类的使用方式几乎完全相同。结构体中的成员,可以是变量,也可以是函数。
与类的成员不同的是,结构体中的成员默认是public修饰的,而类中的成员默认是private修饰的。
访问类成员的方法:
用类的对象来访问:对象名.成员名
用类的指针来访问:指针名->成员名
关于成员函数的内存空间:
基于同一个类创建的多个对象,该类的成员函数被多个对象所共享,即类的成员函数在多个对象之间只有一个副本。
二,构造函数
1.关于构造函数
程序在创建对象时,将自动调用构造函数。类的成员变量可以由构造函数来初始化,构造函数与包含它的类同名,没有返回值,也没有返回类型,指定返回类型会导致编译报错。
2.默认构造函数
如果开发者没有给类指定构造函数,编译器会给类定义一个默认的构造函数去调用,编译器生成的默认构造函数,没有参数,只创建对象,给成员变量赋默认值。
程序中没有定义任何构造函数时,编译器会提供默认构造函数。
当程序中已经为一个类提供了非默认构造函数,就必须再定义一个不接受任何传参的默认构造函数。
默认构造函数的定义方式:
方式一,给已有的构造函数的所有参数提供默认值
Stock(string co = "Error", int n = 0, double price = 0.0)
{
}
方式二,通过函数重载的方式,定义一个没有任何传参的构造函数
Stock() //重载
{
company = "no name";
shares = 0;
share_val = 0.0;
total_val = 0.0;
}
基于默认构造函数创建对象的方式:
Stock first;
Stock first = Stock();
Stock *first_ptr = new Stock;