目录
1、类的定义:
class为定义类的关键字,classname为类的名字,{}中为类的主体,定义结束后,括号外要加分号。
class calssname
{
//类主体
};
类的主体中为类的成员:类中的变量称为类的属性或成员变量;类中的换函数u成为类的方法或者叫做成员函数。
类的两种定义方式:
1、声明和定义全部放在类中,但成员函数如果再类中定义,编译器可能会将其当成内联函数。
class Person
{
public:
void showinfo()
{
cout<<_name<<_sex<<_age<<endl;
}
public:
char*_name;
char*_sex;
int _age;
}
2、类声明放在头文件中,成员函数定义在.cpp文件中,此时成员函数要加类名才能访问所在的域。
class Person
{
public:
void showinfo();
public:
char*_name;
char*_sex;
int _age;
}#include "person.h"
void Person::showinfo()
{
cout<<_name<<_sex<<_age<<endl;
}
一般情况下,使用第二种方式。
2、访问限定符:
1、public修饰的成员在类外也可以被直接访问。
2、protected和private修饰的成员在类外不能被直接访问,两者是类似的。
3、访问权限作用域从该访问限定符出现的位置开始,知道下一个访问限定符出现为止。
4、如果没有访问限定符,作用域默认到类结束。
5、class的默认访问权限为private,struct为public。
3、类的实例化 :
类如同是一个模板,把类中所包含的属性和功能给描述出来,但并没有真正构造出一个实体,没有分配实际的内从空间来进行储存。
一个类可以实例化多个对象,实力化出的对象,占用实际的物理空间,存储类的成员变量
class Person
{
public:
void showinfo();
public:
char*_name;
char*_sex;
int _age;
}int main()
{
Person man;//这就实例化了一个man
//访问对象的属性
man._name="jack";
man._age=10;
man._sex="男“
}
一个类的大小,就是实际该类的”成员变量“之和,注意内存对齐。类中的普通成员变量,跟对象绑定在一起,存储在各个对象自己的内存中; 类中的普通成员函数,存储于代码段中(公共),通过 this指针 区分是哪个对象在调用该函数。
4、this指针
创建了多个对象之后,当他们调用成员函数时,如何进行区分?那么this指针就起作用了。
class Date{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 (){Date d1 , d2 ;d1 . Init ( 2022 , 1 , 11 );d2 . Init ( 2022 , 1 , 12 );d1 . Print ();d2 . Print ();return 0 ;}