走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)
类的成员简介
在C++中,可以通过声明一个类来穿件一种新的类型。类将一组变量(他们的类型通常不同)和一组相关的函数组合在一起。类可以有各种类型的变量组成,还可以包含其他类对象。成员变量称为数据成员它们是类中变量。
成员变量也叫数据成员,他们是类中的变量。成员变量是类的组成部分 。类还可以包含函数,它们被称为成员函数或者方法。成员函数和成员变量一样,是类的重要组成部分,它们决定了类的功能。类的成员函数通常操作成员变量。
下面就来看代码吧
/*
*class.cpp
*Date : 2013-9-20
*Author: sjin
*Mail:413977243@qq.com
*/
#include <iostream>
using namespace std; /*声明一个cat类
* public private 修饰类的数据成员或方法成员
* private:只能在类的方法中访问
* public:可以通过类的任何对象进行访问
* 默认情况下所有类型的成员都是私有的
* 构造函数:constructor 创建并初始化类成员
* 析构函数:destructor 对象被销毁后完成清理工作并释放分配的内存单元
* 注意:一定要使用构造函数来初始化对象,添加构造函数后,一定要添加一个析构函数
* 不要让构造函数和析构函数有返回值,不要让析构函数有参数
*/
class Cat {
private:
int itsAge; //数据成员
public:
Cat(int age); //构造函数
~Cat();//析构函数
int GetAge() const; //方法成员const 表明类成员不能被修改
void SetAge(int age);
void Meow();
}; /*构造函数*/
Cat::Cat(int age)
{
itsAge = age;
} Cat::~Cat()
{
cout << "something will cout" << endl;
} /*析构函数*/ /*获得猫的年龄*/
int Cat::GetAge() const
{
return itsAge;
} /*设置类的名字*/
void Cat::SetAge(int age)
{
itsAge = age;
} void Cat::Meow()
{
cout << "cat speak miao miao ...." << endl;
} int main()
{
Cat Frisky(10); //定义一个cat类
cout << "Frisky.itsAge :" << Frisky.GetAge() << endl;
Frisky.SetAge(5);
cout << "SetAge(5) Frisky.itsAge :" << Frisky.GetAge() << endl;
Frisky.Meow(); return 0;
}
通过上面的代码我们可以学习到:
声明一个cat类
* public private 修饰类的数据成员或方法成员
* private:只能在类的方法中访问
* public:可以通过类的任何对象进行访问
* 默认情况下所有类型的成员都是私有的
* 构造函数:constructor 创建并初始化类成员
* 析构函数:destructor 对象被销毁后完成清理工作并释放分配的内存单元
* 注意:一定要使用构造函数来初始化对象,添加构造函数后,一定要添加一个析构函数
* 不要让构造函数和析构函数有返回值,不要让析构函数有参数
内联实现
就像可以请求编译器将常规函数作为内联一个,也可以将类的方法作为内联,为此只需要在返回值类型前面加个关键字inline。比如下面:
inline int Cat::GetAge() const
{
return itsAge;
}
也可以将函数的定义放到声明中,函数将自动成为内联。如下:
class Cat {
private:
int itsAge; //数据成员
public:
int GetAge() const{return itsAge;} //inline
}
也可以这么写:
class Cat {
private:
int itsAge; //数据成员
public:
int GetAge() const
{
return itsAge;
} //inline。注意这里没有分号
}走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)的更多相关文章
- 走进C++程序世界-----继承和派生(2)
覆盖基类的函数 覆盖基类函数顾名思义就是在派生类中对基类的函数进行的重新定义.这里将会讲到下面的2个知识点: 1.隐藏基类的方法 2.调用基类的方法(隐式和显示调用基类的方法) /* *derive2 ...
- QVariant类及QVariant与自定义数据类型转换的方法
这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是int,也可以是一个颜色值 ...
- 走进C++程序世界------异常处理
一. 概述 C++自身有着很强的纠错能力,发展到现在,已经建立了比較完好的异常处理机制. C++的异常情况无非两种,一种是语法错误.即程序中出现了错误的语句,函数.结构和类,致使编译程序无法进行.还有 ...
- 走进C++程序世界------继承和派生
继承和派生 继承是面向对象编程语言的最重要方面之一,正确的使用继承可编写出设计良好,容易于维护和扩展的应用程序.下面是在其他博客中的总结: ****************************** ...
- 走进C++程序世界-----函数相关(全局变量)
全局变量 在函数外面定义的变量的作用域为全局,在程序的任何函数中都可用.与全局变量同名的局部变量不会修改全局变量的值,但会隐藏它.如果函数中有一个与全局变量同 名的局部变量时,则在函数中使用该名称时, ...
- 走进C++程序世界------IO标准库介绍
流概述 流是C++标准的组成部分,流的主要目标是,将从磁盘读取文件或将输入写入控制台屏幕的问题封装起来,创建流后程序猿就能够使用它.流将负责处理全部的细节. IO类库 在C++输入、输出操作是通 ...
- 走进C++程序世界-----operator new delete 重载
在C++ 的世界里,new 和delete 是keyword.而在C的世界里相相应的malloc和free是函数,关键C++的new和delete分析,详见前面的章节.这里就不在过多的介绍了.链接. ...
- vue.js--基础事件定义,获取数据,执行方法传值
<template> <div id="app"> <h1>{{ msg }}</h1> <br> <button ...
- C++程序设计基础(4)宏定义和内联
1.知识点 1.1宏定义 (1)不带参数的宏定义 #define ERROR_MESSAGE -100 #define SECONDS_PER_DAY 60*60*60 (2)带参数宏定义,这种形式称 ...
随机推荐
- poj3177 Redundant Paths
Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numb ...
- 使用 PIVOT 和 UNPIVOT 行转列 列转行 报表统计 函数
官方文档:http://technet.microsoft.com/zh-cn/library/ms177410(v=SQL.105).aspx 可以使用 PIVOT 和 UNPIVOT 关系运算符将 ...
- 两个php.ini; ubuntu下配置文件
C:\wamp\bin\apache\apache2.4.17\bin\php.ini 用于web访问时的配置文件, C:\wamp\bin\php\php5.6.15\php.ini 用于cli [ ...
- lesson1:threadlocal的使用demo及源码分析
本文中所使用的demo源码地址:https://github.com/mantuliu/javaAdvance 其中的类Lesson1ThreadLocal 本文为java晋级系列的第一讲,后续会陆续 ...
- ASP.net中DateTime获取当前系统时间的大全
在c# / ASP.net中我们可以通过使用DataTime这个类来获取当前的时间.通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04).时间(12:12:12).日期+时间 ...
- AddForce给物体添加刚体效果并且脚本增加一个力(按空格实现)
using UnityEngine; using System.Collections; public class CubeAddForce : MonoBehaviour { float hor,v ...
- 【C#通用类】日志记录类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- web开发小白之路
今天就来谈谈本人从事web开发的一系列白只又白的经历,本人刚开始是从事ios开发的,由于一系列的变故现在变为了web前端开发,不过说来也奇怪,刚开始接触前端时间可以说是彻底蒙圈,各种选择器,各种适配搞 ...
- Java基础知识强化48:Java中哈希码
1.概念: 哈希其实只是一个概念,没有什么真实的指向.它的目的是保证数据均匀的分布到一定的范围内.所以不同数据产生相同的哈希码是完全可以的. 现在是站在JAVA虚拟机的角度来看内存 ...
- JavaScript toString() 函数详解
toString()函数用于将当前对象以字符串的形式返回. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. ...