[163]1.1关于c++类声明的记录【GeekBand】

2016-05-12  本文已影响0人  EAdeBG

//C++微专业  第一周笔记

//以下点多来自 《C++ Primer Plus 》第6版

1. C++程序组成 .h + .cpp + .h(STL) ;

    (1)头文件的包含

       #include <iostream>  ...  用于标准库头文件

       #include  "xxx.h"   ...  用于用户自定义的头文件

    (2)自定义头文件

#ifndef _A_

#define _A_

class A

{

.......

};    //  ";" 结尾

#endif

2.通过  类  使用数据:

class complex

{

private:                  //  数据通常置为 private 不允许外部修改

double a, b;

public:

double real() const {    return a; };

};

---------

{

complex s1

cout << s1.real();  //not  cout << s1.a;  / 体现类对数据的封装

}

3.关于类的构造函数

  (1) 通常情况下,构造函数声明 位于类声明的公有部分;

  (2) 构造函数的参数名 不能与 类成员名冲突;

  (3) 使用构造函数:1、显式调用: Type t = Type{ 1, 2, 3 }; , 2、隐式调用:Type t( 1, 2, 3 ); , 3、Type *t = new Type{ 1, 2, 3 }; 。

  (4) 默认构造函数:

      1、没有参数,需在类声明外定义 Type::Type(){ ..... }

     2、所有参数都有默认值,声明时用初始化:Type( int a=0, int b=0, ... );

     3、隐式版本,C++自动提供。Type::Type() {  };  (1 和2 是对3的重载)

默认构造函数只能有一个;通常提供对所有类成员做隐式初始化的默认构造函数。

隐式调用默认构造函数时没有括号: Type t;

  (5) 复制构造函数:原型 Type(const Type &);

新建对象并将其初始化为另一同类对象时调用复制构造函数:Type t1(t0); Type t2 = t0; Type t3 = Type(t0); Type * t4 = new Type(t0);

默认复制构造函数将逐个复制非静态成员的值,

  (另,通常需重载赋值运算符,)

4.返回对象

  成员函数或独立函数返回对象时的选择有:返回对象的引用、返回对象的const引用、返回const对象

    1、返回对象将调用复制构造函数,

    2、常见的返回非const对象的情况:重载赋值运算符、重载与cout一起使用的<<运算符

    3、若返回函数中创建的对象,应返回 对象 而不是 引用,例如重载的算术运算符,需要调用复制构造函数生成对象。

上一篇下一篇

猜你喜欢

热点阅读