美文网首页
Boolan c++笔记_1

Boolan c++笔记_1

作者: 竹林柳岸 | 来源:发表于2017-04-15 23:52 被阅读0次

1. class有两种

  • 不含有指针
  • 含有指针

2. 基于对象 与 面向对象

3. c++语言 与 c++标准库

4. 头文件的布局

#ifndef __COMPLEX__ (防止重复声明)
#define __COMPLEX__
0.前置声明(声明后面要用到的类和全局函数)
1.类声明(class head, class body)
2.class body外面定义成员函数,全局函数
#endif

5.一些细节

  1. 在class body内部定义的是inline函数,但只是给编译器的建议,最终是否inline由编译器决定。在函数定义的时候前面写上inline。
  2. 访问级别:public,private。数据和不对外使用的函数要声明为私有的。
  3. 构造函数:函数名称与类名相同,参数可以有默认值,写为初始化列表效率高(变量赋值两个阶段:初始化:re(r),im(i),赋值在{}中)。
    构造函数可以有多个,overloading(重载)。
    构造函数放在private区,表示不能在外界创建对象,单例模式
  4. 不带指针的函数多半不用写析构函数。
  5. 函数() const {} 加const不改变数据内容。
    外界const对象只能调用const函数,因为不加const修饰函数,编译器会认为这个函数可能改变数据,所以const对象不允许调用非const函数。
  6. 函数参数传递,pass by value VS. pass by reference (to const) 最好都传引用,若变量只有1个或两个字节传值也可以。
  7. 函数返回值,return by value VS. return by reference (to const) 尽量都用引用。
    函数中需要返回的结果放置的位置:
    (1)放在函数内部创建的对象(生命周期只在函数里)里,这时必须return by value。
    (2)放在函数传入的参数里,这时都可以return by reference。
  8. friends(友元):可以访问private成员。
  9. 相同class的各个objects互为friends
例如.
class complex
{
public:
        int func(const complex& param)
        { return param.re +  param.im; }
private:
        double re, im;
};
...
{
        complex c1(2,1);
        complex c2;
        c2.func(c1);
}
  1. 操作符重载
    (1)作为成员函数 this作为函数参数可以隐藏。
    __doapl( do assaignment plus )
    return by reference 语法分析:传递者无需知道接收者是以reference形式接收。
    eg. c2 += c1; c1是传递者,c2是接收者。
    c3 += c2 += c1;
    (2)作为非成员函数
    返回值一定要是value,因为返回的必定是个local object。
    临时对象 定义
    typename (..); 不需要写对象名 eg. complex(..,..); , int(7);
ostream& operator << (ostream & os, const complex &x)  //返回值可以改为&。
{
     return os << '(' << real(x) << ',' << imag(x) << ')';
}
cout << c1 << conj(c1); 级联输出,所以返回不能是void.

相关文章

网友评论

      本文标题:Boolan c++笔记_1

      本文链接:https://www.haomeiwen.com/subject/kqvoattx.html