走进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)带参数宏定义,这种形式称 ...
随机推荐
- Android软件的国际化
软件的国际化指的就是:在不同语言的环境的操作系统下,显示不同的语言 2 其实实现软件的国际化很简单: 3 4 1.如果是对文字的国际化,只需要在res文件夹下面建立如下文件夹: 5 values-zh ...
- 记npm包开发全过程
概述 为什么开发npm包? 如何开发? 如何写单元测试? package.json 如何发布模块? 如何使用? 为什么开发npm模块? NPM的全称是Node Package Manager,是一个N ...
- 浅谈zygote服务中的设计思路
zygote服务是Android启动和服务APK的核心服务,每个APK都是通过zygote启动,今日阅读它的源码学习到一个不错的设计思路. 首先看看一个APK通过zygote的启动流程: 按照一般的设 ...
- 远程连接mysql
win系统下,连接别人的mysql或者让别人链接自己的mysql: 打开命令行cmd 进入mysql: mysql -u root -p mysql>use mysql; mysql>s ...
- Myeclipse自动生成javabean的get和set方法
用Myeclipse开发java web程序,写javabean的时候,如果字段很多的话,写get和set方法是一件很无语和浪费时间的事情,所以Myeclipse提供了一个自动生成这些方法的功能. 首 ...
- 关于MSHTML
本文翻译自http://msdn.microsoft.com/workshop/browser/mshtml/overview/overview.aspMSDN Home > MSDN Lib ...
- lua pbc
先要将proto文件编译成.pb文件,然后再动态绑定实现lua protobuffer,这就需要了解云风做的pbc的项目,地址为:https://github.com/cloudwu/pbc/blob ...
- uva 11825 Hackers' Crackdown (状压dp,子集枚举)
题目链接:uva 11825 题意: 你是一个黑客,侵入了n台计算机(每台计算机有同样的n种服务),对每台计算机,你能够选择终止一项服务,则他与其相邻的这项服务都终止.你的目标是让很多其它的服务瘫痪( ...
- Android设置里面默认存储器选项(default write disk)的实现
原生的Android设置里面没有默认存储器的选项,可是MTK偏偏加上了这个功能,可能MTK认为这个比較实用吧,所以,他们在原生的基础上面做了改动.加上了这个功能.可是高通平台没有这个功能.相对MTK来 ...
- Window 10通过网线和Wifi连接树莓派
几个月前买了个树莓派,扔在一边没有捣鼓,今天搞定了笔记本通过家里的wifi登录树莓派,下面列出设置过程. 实验环境: 网络:只有wifi 材料:笔记本一台(Win10),树莓派一台,EDUP USB无 ...