一、类

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来访问成员实例。

标准C++(2)的更多相关文章

  1. (系统架构)标准Web系统的架构分层

    标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...

  2. 深究标准IO的缓存

    前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...

  3. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  4. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  5. Python标准库--typing

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...

  6. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  7. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  8. C++标准库实现WAV文件读写

    在上一篇文章RIFF和WAVE音频文件格式中对WAV的文件格式做了介绍,本文将使用标准C++库实现对数据为PCM格式的WAV文件的读写操作,只使用标准C++库函数,不依赖于其他的库. WAV文件结构 ...

  9. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  10. 「标准」的 JS风格

    首先,这份 JS风格指南已经在我司的前端团队实行半年多了: 其次,在程序员的世界里,从入行到资深都需要面对几个世界级的难题,如: 世界上最好的编辑器是什么? 是用空格还是 TAB?用空格还特么衍生出 ...

随机推荐

  1. 洛谷P1002 过河卒

    关于蒟蒻的我,刚刚接触DP....   那么就来做一道简单DP吧.... 首先先看题: 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一 ...

  2. 详解javascript中的this对象

    详解javascript中的this对象 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的 ...

  3. Linux中/etc/passwd 和 /etc/shadows 详解

    linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后: 首先在/etc/passwd文件中查找是否有你的账号,如果没有无法登录,如果有的话将该用户的UID和GID读出来,此外将此用户的 ...

  4. Netty(5)@Sharable

    问题:我写了MyDecoder which extends ByteToMessageDecoder,单线程没问题,但是多线程时,报'the handler should be sharable'.查 ...

  5. linux-ubuntu下调出中文输入法

    linux-ubuntu下调出中文输入法 注:此方法我并没有亲身实践过,只是觉得可能会用到,所以保存一下

  6. (转)网站DDOS攻击防护实战老男孩经验心得分享

    网站DDOS攻击防护实战老男孩经验心得分享 原文:http://blog.51cto.com/oldboy/845349

  7. jsfiddle.net上的记录

    1.JQuery: http://jsfiddle.net/uryc1908/ 2.e-chart: http://jsfiddle.net/8fq96a7s/ 3.easyUI http://jsf ...

  8. 牛客网Java刷题知识点之正则表达式(Matcher、Pattern)

    不多说,直接上干货! 正则表达式是什么? 正则表达式是一种可以用于模式匹配和替换的规范, 一个正则表达式就是由普通的字符(例如字符a到z) 以及特殊字符(元字符) 组成的文字模式, 它用以描述在查找文 ...

  9. 《javascript设计模式》笔记之第九章:组合模式

    之前一直都是按照书的结构顺序做总结,觉得好像不是很好,现在试着完全按照自己的理解做总结.例子还是书上的例子. 一:组合模式的作用: 在web开发中,主要用于创建嵌套的html结点,使得我们方便的把各种 ...

  10. 【转】如何学习Javascript

    首先要说明的是,咱现在不是高手,最多还是一个半桶水,算是入了JS的门. 谈不上经验,都是一些教训. 这个时候有人要说,“靠,你丫半桶水,凭啥教我们”.您先别急着骂,先听我说. 你叫一个大学生去教小学数 ...