(P01)C++介绍
发布日期:2021-05-08 17:55:31 浏览次数:18 分类:精选文章

本文共 2193 字,大约阅读时间需要 7 分钟。

文章目录

1.需要掌握的重要练习

  • 大整数类
  • 字符串类:掌握运算符重载,内存管理与拷贝
  • vector实现:熟悉模板编程
  • 面向对象版的表达式计算器
  • 面向泛型版的表达式计算器:可以扩充为编译器
  • 俄罗斯方块的实现

2.为什么要学习C++

  • C++能提升性能。提升性能意味着钱。C++之父Bjarne Stroustrup戏称C++可以减轻全球变暖问题
  • 编程语言的需求总结为四个:效率(efficiency),灵活(flexibility),抽象(abstraction),生产力(productivity)。
    C语言注重前两者,C++注重前三者,JAVA、.net这些注重后两者。

3.C++为什么难学

  • C++支持的编程范式(paradigm)

    (1)过程式(procedual):顺序,选择,循环
    (2)数据抽象(data abstraction):值语义,ADT,封装
    (3)基于对象(object-based):对象语义, 利用function/bind的代替面向对象
    (4)面向对象式(object-oriented):对象语义,封装,继承,多态
    (5)函数式(functional):LISP,Erlang,用递归代替for,C++11的lambda表达式和闭包支持函数式编程
    (6)泛型形式:
    与面向对象的区别:
    面向对象程序=对象+对象+消息传递(外部对象不能施加在内部对象)
    面向泛型程序=对象+对象+抽象行为(能施加在不同类型而又大相径庭的对象之上)
    (7)模板元形式:基于模板的编程范式,是泛型编程的升华。
    模板元编程是给出代码的产生规则,编译器在编译期解释这些规则并生成新代码来实现我们预期的功能。
    模板元编程由于把运算由执行时提前到了编译时,所以其一个特点是运行时很快,效率很高!不过这是以编译耗时为代价的。另一方面是可以用来做那种神奇的类型推导

  • 值语义与对象语义

    值语义可以拷贝与赋值、对象语义不可进行拷贝与赋值

4.C++ 11值得学习的新特性

  • 智能指针如shared_ptr、weak_ptr等
  • rvalue reference;右值引用
  • function/bind;摆脱面向对象的束缚
  • lambda expression and closure(闭包).函数式编程

5.几本推荐学习C++的书

  • C++ primer 第四版(第五版中文版即将出来,会加入C++ 11的新特性)
  • Effective C++ 3rd
  • C++编码规范
  • 敏捷软件开发——原则、模式与实践
  • 代码大全,第二版

6.开发工具选择

  • 目前最主流的编译有两个GNU g++与和微软Visual C++
    windows和linux都能运行!
  • windows使用的是vs2010进程开发调试,Linux使用ubuntu进行开发调式

7.eg

  • (1)在windows下
    在这里插入图片描述
=========================================================================add.h#ifndef _ADD_H_#define _ADD_H_int add(int a, int b);#endif // _ADD_H_=========================================================================sub.h#ifndef _SUB_H_#define _SUB_H_int sub(int a, int b);#endif // _SUB_H_=========================================================================add.c#include "add.h"int add(int a, int b){   	return a + b;}=========================================================================main.c'#include "add.h"#include "sub.h"#include 
// for coutusing namespace std; // 引入命名空间int main(void){ int a = 10; int b =3; cout<<"hello world!"<
  • (2)在Linux下
    在这里插入图片描述
=========================================================================Makefile.PHONY:cleanCC=g++CPPFLAGS=-Wall -gBIN=mainOBJS=main.o add.o sub.o$(BIN):$(OBJS)		$(CC) $(CPPFLAGS) $^ -o $@#将所有.cpp文件生成为.o文件#%.o:%.cpp		$(CC) $(CPPFLAGS) -c $< -o $@clean:	rm -f *.o $(BIN)=========================================================================
上一篇:深入学习C++
下一篇:(13)muduo_base库源码分析:Thread类实现

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月30日 06时23分01秒