类声明中的函数都将自动成为内联函数。
构造函数的做用:对对象进行初始化。(对象不能像标准类型同样进行初始化,程序只能经过成员函数访问数据成员,不然违反oop原则)构造函数是C++提供的特殊成员函数,无声明类型,无返回值。ios
构造函数易错点:类成员名不能做为参数名,参数表示的是赋给成员的值。函数
使用构造函数进行初始化:oop
1. 显示调用spa
Stock food=Stock(“world”,250,1.25);code
2. 隐式调用对象
Stock food(“world”,250,1.25);内存
3. 使用newio
Stock *food=new Stock(“world”,250,1.25);class
默认构造函数:stream
为全部参数都提供了默认值的构造函数,一般是指无参的构造函数。若是没有提供任何构造函数,则为以下函数:Stock::Stock(){}
注意点:定义了非默认构造函数,而没有提供默认构造函数,不显示初始化会报错。(代码以下)
析构函数:
做用:通常都是回收一些分配出去的内存,或者通知有依赖关系的对象进行某些特殊处理。
实例代码:
通常类在头文件中声明在源文件中定义
如代码所示在定义了非默认构造函数,若是把默认构造函数的定义去掉,则main函数体中第一行Sabc sh1;会报错
头文件Sabc.h
#ifndef Sabc_H #define Sabc_H class Sabc { public: Sabc(); Sabc(int aa, double bb, char cc); ~Sabc(); void show(); private: int a; double b; char c; }; #endif
#include <iostream> #include "Sabc.h" using namespace std; Sabc::Sabc() { a = 2; b = 2.2; c = 'c'; } Sabc::Sabc(int aa, double bb, char cc) { a = aa; b = bb; c = cc; } Sabc::~Sabc() { } void Sabc::show() { cout << "a = " << a << endl; cout << "b = " << b << endl; cout << "c = " << c << endl; }
#include "Sabc.h" int main() { Sabc sh1; Sabc sh2(1, 1.2, 'a'); sh1.show(); sh2.show(); return 0; }