走进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)带参数宏定义,这种形式称 ...
随机推荐
- 寻找第K小元素
要在一个序列里找出第K小元素,可以用排序算法,然后再找.可以证明,排序算法的上界为O(nlogn). 在这里,给出两种可以在线性时间内找出第K小元素的方法. 方法1: (1) 选定一个比较小的阈值(如 ...
- Java枚举7常见种用法
DK1.5引入了新的类型——枚举.在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便. 方法/步骤 用法一:常量 在JDK1.5之前,我们定义常量都是:publicstaticfianl. ...
- jquery next nextAll nextUntil siblings的区别
next:紧挨着$('')的一个元素 nextAll:在$('')以后的所有的同辈元素 nextUntil:until有直到...之前的意思,所以他表示$('')以后的所有的同辈元素,不过要在next ...
- mongodb的应用场景
这篇文章总结的比较到位:http://www.tuicool.com/articles/YnmaAj
- javadoc简介
Javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类.方法.成员等注释形成一个和源代码配套的API帮助文档.也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Java ...
- Java 多字段排序Comparator(兼容Date,Integer,Doubel,Long)
Java 反射类:ReflexUtil public class ReflexUtil { static Logger logger = LoggerFactory.getLogger(ReflexU ...
- license文件生成原理
byte解密weblogic加密oraclehex 现在很多J2EE应用都采用一个license文件来授权系统的使用,特别是在系统购买的早期,会提供有限制的license文件对系统进行限制,比如试 ...
- fstab的格式
# /etc/fstab/dev/hda8 swap swap defaults 0 0/dev/hda9 / ext2 defaults 1 1/dev/hda6 /wine vfat defaul ...
- Mysql相关操作
1. 如何更改系统环境变量PATH?vim /etc/profile 加入 PATH=$PATH:/usr/local/mysql/bin2. 默认mysql安装好后,并没有root密码,如何给ro ...
- prototype vs __proto__ 之间关系
__proto__ is the actual object that is used in the lookup chain to resolve methods, etc. __proto__是解 ...