C++面向对象编程入门指南

引言

C++是从C语言发展演变而来的一种新型的、以向对象为特征的程序设计语言,本章首先阐述面向对象的基本概念、基本特征、程序设计和软件开发;然后介绍C++语言的产生、特点、发展和应用,以及C++程序的一般开发过程;最后通过详细剖析一个简单的C++程序实例带领学习者逐步进入C++精彩的编程世界

面向对象程序设计概述

面向对象程序设计(OOP)是一种以对象为核心的编程范式,强调数据抽象、封装、继承和多态性。与传统的面向过程编程不同,OOP将数据和操作数据的方法绑定为独立的单元(即对象),从而提升代码的可维护性和复用性。C++作为支持OOP的语言,兼容C语言的特性,同时提供了类、对象等高级特性。

类与对象的基本概念

类是用户自定义的数据类型,包含数据成员(属性)和成员函数(方法)。在同一个类的不同对象之间具有以下特征: (1)相同的属性; (2)相同的方法; (3)不同的对象名; (4)不同的属性值(对于那些可以改变的属性值)例如:

class Circle {
private:
    double radius; // 数据成员
public:
    void setRadius(double r) { radius = r; } // 成员函数
    double getArea() { return 3.14 * radius * radius; }
};

对象是类的具体实例,通过.运算符访问成员:

Circle c1;
c1.setRadius(5.0);
cout << c1.getArea(); // 输出78.5

封装与访问控制

封装通过访问修饰符(publicprivateprotected)实现数据隐藏。public成员可在类外访问,private成员仅限类内访问。例如:

class Person {
private:
    string name; // 私有成员
public:
    void setName(string n) { name = n; } // 公有方法
    string getName() { return name; }
};

这种设计保护了数据完整性,避免外部直接修改。

面向对象的优势

  • 模块化:类将相关数据和方法集中管理。
  • 代码复用:继承允许派生类重用基类代码。
  • 灵活性:多态支持同一接口的不同实现。
  • 易维护:修改类的内部实现不影响外部调用。

C++与面向对象的关系

C++在C语言基础上扩展了面向对象特性。C语言以函数为基本模块,而C++以类和对象为核心。类定义了对象的属性和行为,对象是类的实例化。通过封装(隐藏内部实现细节)、继承(建立类之间的层次关系)和多态(同一操作作用于不同对象产生不同行为),C++实现了更灵活的代码组织方式。

C++语言特点

  • 支持面向对象的程序设计
  • 支持泛型程序设计
  • 功能强大的标准模板库
  • C++语言是一种更好的“C语言”

C++语言的发展

时间范围20世纪80年代末-1995年1995年-2000年2000年-2005年2008年及之后
发展阶段初步普及阶段标准化与生态扩展阶段国际标准化与版本迭代阶段现代特性丰富阶段

C++程序实例

/*************************************
* 功能:显示“HELLO C++!”            *
*************************************/
#include<iostream>      //载入头文件
using namespace std;    //使用命名文件std
int main()              //程序入口
{
    cout<<"HELLO C++!"<<endl;
    return 0;
}

注意:

(1)C++程序中用到的关键字(非自定义),例如本程序中的include、using、namespace、 main、cout、endl等一律为小写英文字母。 
(2)程序中用到的待号,例如本程序中的/、*、<、>、#、(、)、(、)、;、"等一律カ英文符号,不能是全角中文符号。

使用名字空间std 的方法

标准C++库提供的对象等都放在标准名字空间std中,使用名字空间std 的方法如下: 

1.利用using namespace使用名字空间 

using namespace std; 

表明此后程序中的所有对象如没有特别声明,均来自名字空间std.

2.用域分辨符::为对象分别指定名字空间

std.:cout<"Hello C++"<<std::end1; 

分别指明了此处cout、endl的名字空间。

3.用using与域分辨符指定名字空间使用方法如下: 

using atd::cout, 

表明此后的cout对象如没有特别声明,均取自名字空间std中。

常用操作符
操纵符作用说明
Oct数据以八进制形式输出作用范围为后续输出的整数对象,小数不起作用
Dex数据以十进制形式输出(默认)
Hex数据以十六进制形式输出
Endl换行并刷新输出流
setw(n)设置输出宽度仅对后一个对象起作用,需包括头文件iomanip
nsetprecision(n)设置输出小数位数(默认为6)作用范围为后续对象,需包括头文件iomanip

课后习题

1.编写一程序输出用*组成的菱形图案。

#include<iostream>  //载入头文件 
#include<iomanip>
using namespace std;  //使用名字空间 
int main()
{
	int n=4;
	int i,j,k;  //i表示循环次数 
	for(i=1;i<=n;i++)  //上半部分 
	{
		for(j=1;j<=n-i;j++){  //每行输出的空格数 
			cout<<" ";
		}
		for(k=1;k<=2*i-1;k++)  //每行输出的星号数 
		{
			cout<<"*";
		}
		cout<<endl; 
	}
	for(i=n-1;i>=1;i--)  //下半部分 
	{
		for(j=1;j<=n-i;j++){
			cout<<" ";
		}
		for(k=1;k<=2*i-1;k++)
		{
			cout<<"*";
		}
		cout<<endl; 
	}
	return 0;
 } 

2. 编写一程序,输入任意十进制数,将其以八进制、十六进制的形式输出。

#include <iostream> 
using namespace std;
int main()
{
    int decimal;
    cout << "请输入一个十进制数:";
    cin >> decimal;

    cout << "八进制形式:" << oct << decimal << endl;        //输出八进制
    cout << "十六进制形式:" << hex << decimal << endl;      //输出十六进制

    return 0;
}

3.仿照本章例题设计一个程序,输入两个数,将它们相除,观察为无限循环小数时按精度从小到大输出的结果。

#include <iostream> 
#include <iomanip>
using namespace std;
int main()
{
    double num1, num2;
    cout << "请输入第一个数:";
    cin >> num1;
    cout << "请输入第二个数:";
    cin >> num2;
    double result = num1 / num2;
    // 按不同精度输出
    cout << "精度为 1:" << fixed << setprecision(1) << result << endl;
    cout << "精度为 2:" << fixed << setprecision(2) << result << endl;
    cout << "精度为 3:" << fixed << setprecision(3) << result << endl;
    cout << "精度为 4:" << fixed << setprecision(4) << result << endl;
    cout << "精度为 5:" << fixed << setprecision(5) << result << endl;        //fixed 强制浮点数以“固定小数位数”的格式输出,当使用fixed后,函数的含义会明确变为“保留n位小数”
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值