#include <iostream>
using namespace std;
//inline内联函数,在类内部的函数称作是内联函数
// 类 C++的特点:抽象 封装 继承 多态
class CGoods
{
/*C++中成员的三个属性
public:
protected:
private://若不写一般默认为私有
C语言struct与C++ class的唯一区别:struct默认成员属性为公有 class默认属性为私有
*/
public:
void RegisterGoods(char* name, int count, float price)
{
strcpy(name, name);
count = c;
price = p;
}
void GetName(char* name)
{
strcpy(name, m_name);
}
int GetCout()
{
return m_count;
}
private:
char m_name[10];
int m_count;
float m_price;
float m_total_price;
};
//当类里面的函数放在类外实现时,需要加上作用域
void CGood::RegisterGoods(char* name, int count, float price)
{
strcpy(m_name, name);
m_count = count;
m_price = price;
}
void main()
{
CGoods c;
}
/*
class 类
属性public protected private
类的私有和保护属性不可以直接访问
方法+数据
方法的实现可以放在类内部也可以放在类的外部实现
class classname{
//类体:由成员函数和成员变量组成
};//注意括号外面加上分号
class为定义的关键字,classname为类的名字{}为类的主体
类中的元素称为类的成员,类中的数据称为类的属性或成员变量,类中的函数称为类的方法或者成员函数。
在.h里面声明类的 在.cpp里面定义类的实现
访问限定符的说明
public修饰的成员在类外可以直接访问、
protected和private修饰的成员在类外不可以直接访问
类的作用域:类定义了一个新的作用域,类所有的成员都在类的作用域中。在类外定义的成员需要使用::作用域标识符指明成员属于哪一个域
分配实际的内存空间来存储它
一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量
类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有
c语言不支持空结构体,从c++支持空结构体,所占字节为1字节
*/
//所占空间大小
class Test
{
public:
void SetData(int data)
{
m_data = data;
}
int GetData()const//常方法
{
return m_data;
}
char m_data0;//1+3
int m_data;//4
int m_data;//4 该结构体共占12个字节
/*
char m_data0;//1+7
double m_double;//8
int m_datal;//4+4
成员对象只保存自己的成员变量,成员函数存放在公共的代码段
结论:一个类的大小,实际上就是类中成员变量之和,当然也要进行内存对齐,注意空类的大小为1
this指针指向当前对象
*/
//日期类
class Date
{
public:
void Display()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
void SetDate(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int_month;
int_day;
};
/*
c++中通过引入this指针解决问题,C++给每个"非静态的成员函数"增加了一个隐藏的指针参数,让该指针指向当前对象
(函数运行时调用该函数对象)在函数体中所有成员变量的操作,都是通过该指针去访问
this指针的属性
1.this指针类型:*const;
2.只能在成员函数的内部使用
this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象的地址传递给this形参
*/
};
class Test()
{
public:
//下面两个函数可以同时存在,因为函数的参数不一样
//Test*const this
void fun()
{}
//const Test*const this
void fun()const
{}
}