第二章 掌握C++(1)从结构到类

  C++与C相比有许多优点,主要体现在封装性(Encapsulation)、继承性(Inheritance)和多态性(Polymorphism)。封装性是把数据与操作数据的函数组织在一起,不仅使程序结构更加紧凑,并且提高了类内部数据的安全性;继承性增加了软件的可扩充性及代码重用性;多态性使设计人员在设计程序时可以对问题进行更好的抽象,有利于代码的维护和可重用。

  在C语言中,我们可以定义结构体类型,将多个相关的变量包装为一个整体使用。在结构体中的变量,可以是相同、部分相同,或完全不同的类型数据。在C语言中,结构体不能包含函数。而在C++中结构体可以包含函数。

  2.1.1结构体的定义

#include<iostream>
using namespace std;

struct point
{
    int x;
    int y;
};

int main()
{
    point pt;
    pt.x = 0;
    pt.y = 0;
    cout<<pt.x<<" "<<pt.y<<endl;
    return 0;
}

  注意,在定义结构体时,一定不要忘了在右花括号处加上一个分号。

  下面,将输出函数写在结构体中,代码就变成:

#include<iostream>
using namespace std;

struct point
{
    int x;
    int y;
    void output()
    {
        cout<<x<<" "<<y<<endl;
    }
};

int main()
{
    point pt;
    pt.x = 0;
    pt.y = 0;
    pt.output();
    return 0;
}

  2.1.2结构体与类

  将上面的point结构体定义中的关键字struct换成class,如下:

class point
{
    int x;
    int y;
    void output()
    {
        cout<<x<<" "<<y<<endl;
    }
};

  在默认情况下,结构体成员是公有(public)的,而类的成员是私有(private)的。在类中,公有成员是可以在类的外部进行访问的,而私有就只能在类的内部进行访问。所以,2.1.1中的代码直接只将struct换成class再运行时会出错,因为我们访问了类的私有成员。

  所以,将其都改为公有的也就可以运行了。

#include<iostream>
using namespace std;

class point
{
public:
    int x;
    int y;
    void output()
    {
        cout<<x<<" "<<y<<endl;
    }
};

int main()
{
    point pt;
    pt.x = 0;
    pt.y = 0;
    pt.output();
    return 0;
}

  

时间: 2024-10-21 17:50:28

第二章 掌握C++(1)从结构到类的相关文章

第二章:界面和目录结构

Eclipse和Android虚拟设备管理器概览 Eclipse正常编码界面和调试界面是不相同的,分别如图: android虚拟设备如图: android项目结构概览 直接上图: 更详细的关于res的介绍: 我会一个一个介绍项目中的目录.首先是src src/文件夹——源代码目录 平时我们写程序,建包建类都是在这里进行,这里存放着项目的所有精华和程序员的一切心血. gen/文件夹——系统自动生成代码目录 既然是系统自动生成的,所以我们大可不必管它.顺便提一下项目的重建,让系统代码重新自动生成——

第二章:程序的基本结构

flask中的helloworld: 1 from flask import Flask 2 3 app = Flask(__name__) 4 5 @app.route('/') 6 def index_1(): 7 return 'hello world' 8 9 @app.route('/<name>') 10 def index_2(name): 11 return 'hello {}'.format(name) 12 13 if __name__ == '__main__': 14

第二章 第六节 顺序结构实例

习题评测地址:http://ybt.ssoier.cn:8088 1.计算浮点数相除的余 [题目描述] 计算两个双精度浮点数a和b的相除的余数,a和b都是正数的.这里余数(r)的定义是:a = k * b + r,其中 k是整数, 0 <= r < b. [输入] 输入仅一行,包括两个双精度浮点数a和b. [输出] 输出也仅一行,a÷b的余数. [输入样例] 73.263 0.9973 [输出样例] 0.4601 [参考代码] #include <iostream> #includ

《JS权威指南学习总结--第二章词法结构》

第二章词法结构 内容要点: 一.注释 1. //表示单行注释 2. /*这里是一段注释*/ 3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/ 二.直接量 所谓直接量,就是程序中直接使用的数据量,比如: 数字.小数.字符串文本.布尔值.正则表达式直接量 三.标识符和保留字 标识符作用:标识符就是一个名字,在JS中,标识符用来对变量和函数进行命名,或者用做JS代码中某些循环语句中的跳转位置的标记. 标识符命名规则: 1.必须以字母.下划线(_)或美元符($)开始. 2.后续的字符可以是

计算机组成原理和结构图式(第二章)

计算机组成原理和结构图式(第二章) 1.数值型数据表示 1)进位计数制 (1)十进制—>二 整数部:除基取余 小数部:乘积取整 (2)二进制—>按权相加 2)数符表示:无符号数.有符号数(真值.机器数) 3)定点表示法:小数点位置固定不变,本身不占存储位 (1)整数:精度为固定的1 无符号 有符号:原码.补码 (2)小数:精度为固定的2^-7—x.xxxxxx 原码 补码 4)浮点表示法 阶码(首位阶符Ef)|尾数(首位数符Mf) 真值N=±R^E×M 阶码E,定点整数,补码/移码表示,代表数

关于《大道至简》第二章的收获

今天阅读了大道至简的第二章,这一章的标题是懒人造就了方法.文章以愚公和李冰作为例子,讲述了好的方法是如何产生的.由此我们可以想到身边的一些例子,假如我们要给一些学生出算数题,题量不大的情况下我们可以直接出题,当要求题量的时候这就是一个大工程了.为此,我们可以写一个简单的软件实现出题的功能.虽然写这个软件会花费一些时间,但是完成之后会省下很大的精力. 我们应该学会将源代码分写在几个文件中,而不是所有的都写在一起,因为都放在一个文件中,到了后期的维护可能会是很大的问题,因此Unit关键字出现了,将一

第二章 Java框架整合--maven父子模块

2.1.maven父子模块 在实际开发中,我们基本都会用maven父子分模块的方式进行项目的开发. 2.2.实际操作 2.2.1.手工建立一个ssmm0的文件夹,并在该文件夹中加入一个pom.xml文件,该pom.xml文件内容如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln

重温《STL源码剖析》笔记 第二章

第二章:空间配置器 allocator SGI特殊的空间配置器,std::alloc SGI是以malloc()和free()完成内存的配置与释放. SGI设计了双层级配置器: 第一级配置器直接使用malloc()和free();  _malloc_alloc_template 第二级配置器则视情况采用不用的策略: _default_alloc_template 当配置区块超过128bytes时,视之为“足够大”,便调用第一级配置器: 当配置区块小于128bytes时,视之为“过小”,为了降低额

Delphi知识点与技术概述【第二章 核心类库】

第三章 核心类库 Delhpi可视化编程依赖于庞大的巨型类库.Delphi 标准类库包含了数百个类以及数以千计的方法. 内容提要: *RTL包.CLX与VCL CLX用作linux中,VCL用作Windows中 VCL是一个独立的大型库(组件,控件,非可视组件,数据集合,数据感应控件,等等). 库的核心非可视化组件与类属于RTL包. Vcl结构: CLX结构: BaseCLX VisualCLX DateCLX NetCLX 库的VCL专用部分: VCL还提供了Windows专用的: Delph

Java基础知识二次学习-- 第二章 基础语法与递归补充

第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下划线,$,数字组成,应该由字母,下划线$开头,同时应该避开java保留字符 变量是内存中的一小块区域,使用变量名来访问这块区域 执行过程中的内存管理(疑问:这里的内存和Jvm的一样吗?) code segment 存放代码 data segment 静态变量 字符串常量 stack 栈 局部变量 h