C++开发工程师课程第一周笔记 GeekBank

来源:互联网 发布:linux怎么看内存大小 编辑:程序博客网 时间:2024/06/06 00:53

一、c++语言初步认识

        面向对象的设计语言有c++、JAva、c#等,但是c++的运行效率高于其他语言,这是c++语言最大的一个优点,同时它又是比较难掌握的一门语言。《the c++ primer》中提到“c++正在成为一门完美的程序设计语言”。因此我成为c++的粉丝,虽然比较难掌握,我还是会坚持学下去。对于c++来说,它可以分为两个部分,一部分是语言规范,另一部分是标准库,传说他的标准库特别强大,一个会使用语言而不会使用标准库的程序员是没有生产价值的,所以目前的学习是把语言部分学好,再而了解标准库方面。c++可以分为单一class设计和面向对象设计。

二、c++语言 和c语言的 区别

       我之前在大学学过一点C语言,仅仅是学过,学没学到知识却是另一回事。后悔啊!C语言的定义中局部变量是在函数内定义的变量,其作用域仅限于函数内,在函数内才能引起作用。全局变量是定于在函数之外的变量,它的作用域是从定义开始到所在文件结束。所以C语言构建的函数是对全局数据处理,这样就存在一个缺点,如果数据特别复杂,处理起来就比较困难。而c++是把一类数据和处理该类数据的函数一起包装起来,这样处理数据的效率更高。

三、c++programs 代码的基本形式



c++的output使用cout来输出,这个输出有一个特点,就是只要是基本类型都可以输出,不需要像C语言一样只能输出定义的类型。
比如:一个输出“Hello world”的c++程序
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

Header中的防卫式申明,即第一次引入头文件后,再次引入时就不用再次从头到尾读取头文件。格式如下:以一个复数例子来讲
Header (头文件)的布局,在写1,2之前考虑要不要写前置声明


下面具体说说Class declarations的写法,以复数程序为例:
class complex 
{
public:
    complex (double r=0,double i=0)
        : re(r),im(i)
        {}
        complex& operator +=(const complex&);
        double real()  const {returu re;}
        double imag() const {return im;}
private:
    double re,im;
    
    friend complex&_doapl(complex*,const complex&); 
};

      1、数据都放在private 部分包装起来,pubic是可以让外界看或者使用的。
      2、构造函数的函数名必须和class header中相同,并且没有返回类型,初始列(初值列)是c++构造函数的一大形式特点。构造函数可以有多个称之为重载,但是要是在创建对象时,电脑不知道用哪个构造函数时,就不能用重载。
       3、函数可以分为两种函数,一种改变源数据的函数,另一种是不改变源数据的函数,这种函数最好在之前加上const,定义为常量函数。
       4、参数传递可以是pass by value也可以是pass by reference (to const),但是尽量使用pass by reference。这种效率更快。
       5、返回值可以是return by value也可以是return by reference (to const),尽量使用return by reference。
       6、什么情况下可以传递pass by reference (to const)和return by reference (to const)呢?函数的结果有两种情况:
case1:结果被放在已经有的单元存储空间中。如c1+=c2,表达式的结果存放在已有的c1的存储单元中。
case2:结果需要重新创建一个存储空间。如c1+c2,表达式的结果需重新创建一个空间来存放。
在case1 的情况下可以传递pass by reference (to const)和return by reference (to const),这样可以提高运行效率。

四、写一个class的几点考虑

     1、数据放在private部分中。
     2、参数传递尽量使用pass by reference。
     3、返回值传递尽量使用return by reference。
     4、class body中考虑要不要写const。
     5、构造函数中的特殊语法结构。
0 1