走进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)带参数宏定义,这种形式称 ...
随机推荐
- Red Gate - SQL Source Control实现对SQL SERVER 的源代码控制
原文地址:http://bbs.csdn.net/topics/350165431 SQL Server 一直没有一款很好的源码控制器,之前自己曾尝试自己写一个,将所有的 脚本 自动生成到某一目录下, ...
- 如何在Windows服务程序中读写HKEY_CURRENT_USER注册表
在服务程序中想要对注册表HKEY_CURRENT_USER下的内容进行读写,不会返回失败,但是始终无效.原因是: 1.服务运行在系统权限之下,而不是任何一个用户 2.HKEY_CURRENT_USER ...
- hdu1166敌兵布阵
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- java 枚举类型
原来枚举类型还可以这样玩... public enum Tenum { None(1),ByteArray(2),List(3),Map(4); private int id; private Ten ...
- IntelliJ IDEA创建web项目及异常问题解决
IDEA配置Tomcat: 1.下载Tomcat,本次使用的是apache-tomcat-6.0.43 2.IDEA配置Tomcat 在idea中的Settings(Ctrl+Alt+s)(或者点击图 ...
- (转)iOS 各种控件默认高度(图示)
1.状态栏 状态栏一般高度为20像素,在打手机或者显示消息时会放大到40像素高,注意,两倍高度的状态栏在好像只能在纵向的模式下使用.如下图 用户可以隐藏状态栏,也可以将状态栏设置为灰色,黑色或者半透明 ...
- android 解析json数据格式
json数据格式解析我自己分为两种: 一种是普通的,一种是带有数组形式的: 普通形式的:服务器端返回的json数据格式如下: {"userbean":{"Uid" ...
- 创建Chromium WebUI接口
转载自:http://www.chromium.org/developers/webui Chrome的WebUI是那种,在Chrome中输入 "chrome://xxxx"就能打 ...
- Android Fragment 详解(一)
Android从3.0开始引入fragment,主要是为了支持更动态更灵活的界面设计,比如在平板上的应用.平板机上拥有比手机更大的屏幕空间来组合和交互界面组件们.Fragment使你在做那样的设计时, ...
- Android之旅十八 百度地图环境搭建
在android中使用百度地图,我们能够先看看百度地图对应的SDK信息:http://developer.baidu.com/map/index.php? title=androidsdk,它里面基本 ...