标准C++(2)
一、类
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来访问成员实例。
最新文章
- Android注解使用之使用Support Annotations注解优化代码
- [python拾遗]enumerate()函数
- #Mac技巧#如何在Mac系统上新建TXT文档,以及打开txt文稿的乱码问题如何解决
- Matlab中如何将(自定义)函数作为参数传递给另一个函数
- Mac 下 Intellij IDEA 2016.1.2+maven+jetty+ JRebel 6.4.3 破解+spring mvc
- ehcache的介绍和使用
- 解决VS2010无法打开,提示无法找到atl100.dll的方法
- ANGULAR 开发用户选择器指令
- iOS已发布应用中对异常信息捕获和处理
- VC2010对Excel的操作
- MySQL查询数据表中数据记录(包括多表查询)
- Java 学习笔记 (六) Java 定义变量
- CircleView
- BZOJ1800:fly 飞行棋 (双指针 组合数)
- django 模型关系
- html基本标签(慕课网)
- VUE在BODY上绑定enter事件
- vue配合UI组件
- mycat 分库分表
- stm32 修改工作频率
热门文章
- Arrange the Bulls
- King&#39;s Pilots
- JavaScript进阶 - 第8章 浏览器对象
- 4.高级数据过滤 ---SQL
- 2017EIS高校运维大赛ctf wirteup
- 题解 BZOJ 1037 &; Luogu P2592 [ZJOI2008]生日聚会
- java课后思考题(六)
- 开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
- HashMap与TreeMap
- 【.Net MVC4 connectionString设置】获取SQL server数据库的连接字符串