1.面对对象编程:
从用户的角度去思考,看一个东西的特征而不是一个一个步骤。我认为C++只是更加方便的实现了面向对象编程--利用类这个类型,实际上c语言也可以面向对象编程。只不过实现成本会高许多。
例如:c++实现一个面对对象的结构
class 猫 {
public:
void 攻击();
private:
int 速度;
int 力量;
}
类 有点类似与结构体,但比结构体好用。可以试着用c语言实现上面的结构。(c语言的后续扩展能力没那么好)。
2.类的声明和定义
类的声明 class classname{}; 这种语句是被允许的
类的定义:(该类被定义在Stock.h文件中)
class Stock{
private:
const int Price;
int insert_money;
int total_money;
int now_money;
public:
//构造函数
Stock();
Stock(int price, int insert_money, int now_money);
//析构函数
~Stock();
//成员函数
void show();
void Add_money;
}
用c语言来实现这种结构:
//C language implementation
struct Stock{
//private
static const int Price
static int insert_money;
static int total_money;
static itn now_money;
//public
//初始化函数
struct Stock (*P)(int,int,int );
//函数指针调用show和Add_money
void (*P)();
}
3.成员变量
成员变量通常是private,OOP编程应该将数据隐藏起来,向外只提供操作即成员函数
4.成员函数的定义
void Stock::show(void){
cout<<"hello world"<<endl
}
注:常函数:void Stock::show(void)const;不会改变变量的值的函数
常量:const int b;
static int b;该成员变量属于类,
static int b();
5.构造函数和析构函数
vs:0xcd+0xcd没有初始化,烫烫烫烫烫烫烫
一个对象在创建之初应该被初始化,不然其内容是不确定的
初始化:构造函数 classname(); 没有返回类型
析构函数没有参数
析构函数什么时候会被调用,在之前还是在之后
两种初始化方法
列表初始化
Stock(int parameter = 1000):m_vari(vari){
}
定义的构造函数,如果定义对象的时候传参会使用参数值,否则使用default值
6.this指针:指向调用成员函数的对象,是对象的地址
场景:
构造函数为
class Stock{
public:
A(int a, int data =100):b(data)}
this->a = a;
}
~A(){cout<<"byebye"<<endl;}
void show(void) const
{
cout<<"a ="<< a <<endl;
cout<<"b ="<< b <<endl;
}
private:
int a;
const int b;
};
this指的是用类生成的对象