[163]1.1关于c++类声明的记录【GeekBand】
//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、若返回函数中创建的对象,应返回 对象 而不是 引用,例如重载的算术运算符,需要调用复制构造函数生成对象。