类声明
//stock00.h
#ifndef UNTITLED_STOCK00_H #define UNTITLED_STOCK00_H #include <string> class Stock { private: std::string company; public:
void set(); void show(); }; #endif //UNTITLED_STOCK00_H
类方法定义
//stock00.cpp #include <iostream> #include "stock00.h" void Stock::show() { std::cout<<company<<std::endl; } void Stock::set() { company = "xmm"; }
const成员函数
void show() const; //const成员函数不能修改调用对象 //const修饰的类只能调用const成员函数 const Stock S1("xumaomao");
比较两个类中的成员
//声明 const Stock & compare(const Stock & S) const; //定义 const Stock & Stock::compare(const Stock &S) const { if(S.company_ > company_) return S; else return *this; }
对象数组
Stock S_array[4]; //默认初始化 Stock S1_array[4] = { Stock("a"), Stock("b"), Stock("c"), Stock() };
在类中定义常量
- 用枚举的方式,用下面的方式声明枚举时并不会创建类数据成员,也就是说所有的对象中都不包好该枚举数据,Months只是一个符号名称,在作用域为整个类的代码中遇到它时,编译器将用12来替换它。
class Bakery { private: enum {Months = 12}; double costs[Months]; };
- 用static const来定义静态常量,该静态常量将与静态变量存储在一起,而不是存储在对象中。因此只有一个Months常量,被所有的Bakery对象共享。
class Bakery { private: static const int Months = 12; double costs[Months]; };
类的类型转换
- 利用构造函数C++基本数据类型转化为类类型
Stonewt(double lbs); //类构造函数 Stonewt myCat; myCat = 19.6; //利用构造函数来进行隐式转换 explicit Stonewt(double lbs); //利用关键字explicit声明构造函数可以关闭上面的隐私类型转换功能,只能使用下面的显示类型转换 myCat = Stonewt(19.6);
- 定义转换函数把类转化为基本类型
Stonewt::operator double() const { return pounds; //pounds是类中一个double类型的数据成员 } /* 注意:转换函数不能指定的返回类型也不能有参数 */ Stonewt wells(20, 3); double star = wells;
特殊成员函数
C++自动提供了以下成员函数:
- 默认构造函数
- 默认析构函数
- 复制构造函数
- 赋值运算符
- 地址运算符
- 移动构造函数(C++11)
- 移动赋值运算符(C++11)