一、类

C++是一种面向对象的语言,它在C语言的基础上添加了一种新的数据结构,类 ——class

class是一种复合型的数据结构

它能够由不同类型的变量及函数组成

C++中的class与struct几乎没有区别

唯一的区别是class里的成员的默认属性是private(私有的) ,而struct里的成员默认属性是public (公共的)

class Person
{
char name[];
int age;
public:
void show(void)
{
cout << "name:" <<name << " age: " << age <<endl;
}
};

二、类的构造函数

在创建类的实例时,会自动执行类的构造函数,构造函数没有返回值,且构造函数的名字要与类名一致,没有手动定义构造函数时,编译器会自动定义一个无参的构造函数,通常会程序员会定义类的构造函数来进行初始化、分配资源、设置对象的初始状态。使用new申请内存时,会自动调用构造函数。

构造函数能够被重载,同时,构造函数的参数能够有默认值,调用的构造函数不存在时可能会造成编译错误

class Student
{
int id;
int age ;
char sex;
public :
Student(void)
{
id =;
}
Student(int _age)
{
age = _age;
}
Student(char sex,int id = )
{ }
};

三、类的析构函数

当对象被销毁时会自动调用它的析构函数,对象的整个生命周期中只能被调用一次,它是对象被销毁前的最后执行的动作。析构函数不能被重载,没有返回值,没有参数。如果没有定义析构函数编译器会默认产生一个析构函数,使用delete释放内存时会自动调用析构 函数。

析构函数的定义

~类名(void)

{

}

class Student
{
int id;
int age ;
char sex;
public :
~Student(void)
{
}
};

四、初始化列表

写在构造函数后,是一种成员的初始化方式,通常用来初始化 const 属性的成员

语法如下

类名(参数...):成员1(参数1),成员2(参数2)

{

}

【例】:

class Student
{
const int id;
int age ;
const char sex;
public :
~Student(int age,int _id,char _sex):id(_id),sex(_sex)
{
this->age = age
}
};

五、this指针

相同类的对象各自拥有独立的成员实例,但彼此共享一份成员函数(成员函数只有一份)

当一个对象调用了一个它的成员函数(非静态static的)时,编译器会自动为该函数传递一个指向该对象的指针this,成员函数由此能够知道被哪个对象调用了

类中的所有成员函数都有this指针,包括构造、析构、拷贝构造等。
  只是构造中this指向的是正在被创建的对象。

如果成员函数是属性是静态(static)的,那么该函数就属于这一个类,可以通过 类名::函数名(参数) 调用,因此静态成员函数没有this指针,无法通过this来访问成员实例。

最新文章

  1. Android注解使用之使用Support Annotations注解优化代码
  2. [python拾遗]enumerate()函数
  3. #Mac技巧#如何在Mac系统上新建TXT文档,以及打开txt文稿的乱码问题如何解决
  4. Matlab中如何将(自定义)函数作为参数传递给另一个函数
  5. Mac 下 Intellij IDEA 2016.1.2+maven+jetty+ JRebel 6.4.3 破解+spring mvc
  6. ehcache的介绍和使用
  7. 解决VS2010无法打开,提示无法找到atl100.dll的方法
  8. ANGULAR 开发用户选择器指令
  9. iOS已发布应用中对异常信息捕获和处理
  10. VC2010对Excel的操作
  11. MySQL查询数据表中数据记录(包括多表查询)
  12. Java 学习笔记 (六) Java 定义变量
  13. CircleView
  14. BZOJ1800:fly 飞行棋 (双指针 组合数)
  15. django 模型关系
  16. html基本标签(慕课网)
  17. VUE在BODY上绑定enter事件
  18. vue配合UI组件
  19. mycat 分库分表
  20. stm32 修改工作频率

热门文章

  1. Arrange the Bulls
  2. King&#39;s Pilots
  3. JavaScript进阶 - 第8章 浏览器对象
  4. 4.高级数据过滤 ---SQL
  5. 2017EIS高校运维大赛ctf wirteup
  6. 题解 BZOJ 1037 &amp; Luogu P2592 [ZJOI2008]生日聚会
  7. java课后思考题(六)
  8. 开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
  9. HashMap与TreeMap
  10. 【.Net MVC4 connectionString设置】获取SQL server数据库的连接字符串