OOP Lec1: Using Object

Introduction to C++

选择需要的语言

观察最热门的语言

TIOBE Index:观察语言使用率的网站

现代编程语言之间的差异:

  • 几乎都是 C-like 语言,语法上的差异非常小
  • 由库和代码传统区分其适用范围

结论建议

  • 对计算机本身(体系结构、操作系统、编译)感兴趣--->C
    • 历史原因,许多计算机内核的内容都是由 C 或更底层的代码实现的
  • 想编程解决⼿头的问题(统计、AI、桌⾯⼩程序)--->Python
    • 大量的库和模块支持,适合编写小段代码完成一个小功能
  • 有明确的需求(求职)--->⼈家要什么学什么(PHP、 JavaScript、 C++)
    • C++ 是写库的语⾔
  • 还没想好--->Java

Buzzwords

  • encapsulation
    • 译为封装,内容不外露,外部由统一的接口管理
    • $\neq$ package
  • inheritance
    • 继承
  • polymorphism
    • poly- 多,morph 形态, -ism 主义,译为多态
    • 一个水杯装不同的内容,洗手和洗衣服都是“洗”
  • overriding
    • over- 超越,ride 骑,译为覆盖
    • 和 overwrite 有区别:overwrite 指改写
  • interface
    • 界面、接口
    • 两个东西链接的地方
  • cohesion
    • 内聚
    • 一个物品的内容紧密相连
  • coupling
    • 耦合
    • 两个东西之间如何链接,关联的程度
  • collection classes
    • 容器(和集合 set 区分)
  • template
    • 模板
  • responsibility-driven design
    • 每个对象只完成它的责任

C++ 历史简述

Bjarne Stroustrup

历史进程

  • 1975 - 1978,BS 在剑桥大学读书。
    • 使用 Simula 编写仿真程序
    • 支持类、继承和类型检查,但解释语言,性能很差
  • 1979,BS 进入 AT&T 的贝尔实验室,着手研究 C with classes。
  • 1980,BS 已经定义了除 virtual function 之外的绝大部分 C++ 特性。
  • 1983,BS 完成了 virtual function 的定义,这门新的语言被 Rick Mascitti 命名为 C++。
  • 1985,Cfront 出现,用于将 C++ 代码翻译为 C 代码来编译,这样不用自己写 C++ 编译器了。
  • 同年 BS 发布著作《The C++ Programming Language》(非初学者的教科书)。
  • 1990,ANSI C++ Committee 成立,ISO/ANSI Standard C++ 国际标准。
  • 1998,C++98 标准,ISO/IEC 14882:ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP (open-std.org)
  • 2011,C++11 标准,相较于 C++98 有海量的新内容
    • 2014,C++14 标准,有少量的更新,tick-tock 更新模式
    • 2017,C++17 标准,大量预期的特性没有进入
  • 2020,C++20 标准,,可以在 C++ 里写 Python

C 与 C++

C++ 的目的

支持面向对象程序设计的同时,保持 C 的高性能

C++ 与 C 的区别

  • 应该将 C++ 视为一门独立的语言
  • C++ 支持面向对象
  • C++ 支持泛型
  • C++ 支持函数式编程

Example

简单的输入输出:

#include <iostream>
#include <iomanip>
using namespace std;

int main(void){
    int number;
    cout << "Enter a decimal number: ";
    cin >> number;
    cout << "The number you entered is: " << number << endl;
    return 0;
}

<iomanip> 库包含许多控制符(manipulator),包括位宽控制 setw()、精度控制 setprecision()等。

cout << setw(10) << setprecision(2) << 12.856 << endl;

String 类的使用

C++ 中维护字符串的类。

详细内容:std::basic_string - cppreference.com

定义

#include <string>
std::string str;
std::string s1("abcd");
std::string s2 = "bcde";
std::string s3(s1);

实际上的构造函数原型

string(const char *cp, int len);
string(const string& s2, int pos);
string(const string& s2, int pos, int len);

输入输出

cin >> str;
cout << str;
getline(cin, str);

字符串的连接

s3 = s1 + s2;
s3 += "lalala";

其他方法

s.length():返回字符串的长度

s.substr(pos, len):将 pos 位开始的 len 个字符返回。

其他的方法:

void insert(size_t pos, const string& s);
void erase (size_t pos = 0, size_t len = npos);
void append (const string& str);
void replace (size_t pos, size_t len, const string& str);
size_t find (const string& str, size_t pos = 0) const;
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇