网站建设 域名,如何做网站啊,设计师必去的网站,c 能和php一起做网站吗目录
一、类的定义 1、类的定义格式 2、访问限定符 3、类域
二、实例化 1、实例化的概念 2、对象大小 一、类的定义 1、类的定义格式
class为定义类的关键字#xff0c;Stack为类的名字#xff0c;{}中为类的主体#xff0c;注意类定义结束时后面分号不能省略。类体中内容…目录
一、类的定义 1、类的定义格式 2、访问限定符 3、类域
二、实例化 1、实例化的概念 2、对象大小 一、类的定义 1、类的定义格式
class为定义类的关键字Stack为类的名字{}中为类的主体注意类定义结束时后面分号不能省略。类体中内容称为类的成员类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量⼀般习惯上成员变量会加⼀个特殊标识如成员变量前面或者后面加_或者m开头注意C中这个并不是强制的只是⼀些惯例具体看公司的要求。C中struct也可以定义类C兼容C中struct的用法同时struct升级成了类明显的变化是struct中可以定义函数⼀般情况下我们还是推荐用class定义类。定义在类⾯的成员函数默认为inline。 2、访问限定符 ⼀般成员变量都会被限制为private/protected需要给别人使用的成员函数会放为public。C⼀种实现封装的方式⽤类将对象的属性与方法结合在⼀块让对象更加完善通过访问权限选择性的将其接提供给外部的用户使用。public修饰的成员在类外可以直接被访问protected和private修饰的成员在类外不能直接被访问protected和private是⼀样的以后的继承才能体现出他们的区别。访问权限作用域从该访问限定符出现的位置开始直到下⼀个访问限定符出现时为止如果后面没有访问限定符作用域就到}即类结束.。 如下我们创建了一个时间类。 若我们想使用这个栈就跟在C语言里使用结构体差不多。
#include iostream
using namespaec std;//class 是类的关键字它后面接着的是类的名字
class Time
{
public:void Init(int year, int month, int day)//初始化时间类{_year year;_month month_day day;}void Print()//打印{cout _year - _month - _day endl;}private:int _year;int _month;int _day;
};//加分号int main()
{Time t;//创建一个类对象t.Init(2000, 1, 1)//将他初始化t.Print();//打印return 0;
}
在这个时间类里我们不能直接访问它的私有成员_year、_month、_day。
int main()
{Time t;//创建一个类对象//t._year 2000;//t._month 1;//t.day 1;//上面三个都是会编译报错的return 0;
}class定义成员没有被访问限定符修饰时默认为privatestruct默认为public。
struck Time_s
{
//public:int _year;int _month;int _day;
};class Time_c
{
//private: int _year;int _month;int _day;
};int main()
{Time_s ts;Time_c tc;ts._year 2000;//编译器可以执行tc._year 2000;//编译报错return 0;
} 3、类域
类定义了⼀个新的作用域类的所有成员都在类的作⽤域中在类体外定义成员时需要使用::作 用域操作符指明成员属于哪个类域。
#include iostream
using namespaec std;class Time
{
public:void Init(int year, int month, int day);//初始化时间类
private:int _year;int _month;int _day;
};
//使用::作用域操作符
void Time::Init(int year, int month, int day)
{_year year;_month month_day day;
}int main()
{Time t;//创建一个类对象t.Init(2000, 1, 1)//将他初始化return 0;
}二、实例化 1、实例化的概念
用类类型在物理内存中创建对象的过程称为类实例化出对象。
类是对象进行⼀种抽象描述是⼀个模型⼀样的东西限定了类有哪些成员变量这些成员变量只 是声明没有分配空间用类实例化出对象时才会分配空间。
⼀个类可以实例化出多个对象就像现实生活中盖房子一样我们可以用一个建筑图纸盖多个房子而类就是建筑图纸当我们要创建一个类对象的时候就是盖房子也就是实例化。 2、对象大小
我们要计算创建类对象的大小我们首先要知道它在内存里存储的规则 第⼀个成员在与结构体偏移量为0的地址处。其他成员变量要对⻬到某个数字对齐数的整数倍的地址处。注意对齐数编译器默认的⼀个对齐数与该成员大小的较小值。VS中默认的对齐数为8。结构体总大小为最大对齐数所有变量类型最大者与默认对齐参数取最小的整数倍。如果嵌套了结构体的情况嵌套的结构体对齐到自己的最⼤对齐数的整数倍处结构体的整体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍。 它的对齐规则跟C语言里数据结构的对齐规则差不多不过C类的对齐规则是针对与它的成员变量的不包括成员函数。
还有一种特殊的对象⬇里面没有成员变量它的内存大小是1目的是说明有这个类。
#include iostream
using namespace std;
class A
{
};int main()
{A a;cout sizeof(a) endl;return 0;
}