类
类的声明:
·class Name[:Inheritance List]{
//class body
}; //大括号外要加分号,与java,C#不同
Inheritance List //继承列表 C++支持多重继承,与Java CSharp不同
C++不支持 Point p=new Point(); 这样的写法
class Point{
private : //成员变量,一般为private
int x;
int y;
public :
void Show(){ //成员函数,一般都为public
cout<<x<<endl;
cout<<y<<endl;
}
}
·注意:
·类一定要写在头文件里,通常一个类一个头文件,有时候几个有关系的类放在一个头文件
·头文件一定要写防卫式声明(这样做是为了防止多次定义(引用)) =>:
#ifndef _POINT_H_
#define _POINT_H_
class Point{
...
}
#endif
·接口与实现分离
·注意内联函数
不管一个类的对象有多少个,函数只声明一次内存
每个类的对象内都有一块内存是用来存储这个对象的地址的,称为this指针
-> //指向运算符
Point p;
Point *q;
q=&p;
q->Show(); //这句相当于(*q).Show();也等于p.Show();
屏蔽效应:变量名相同时,取最小作用域的变量
参数和类成员出现名称冲突时记得加this->
·类的构造函数实际上是用来初始化的
-----------------------------------------------------------------------------------------------------------------------------
class with pointer
class MyString{
public :
MyString(char* cstr=nullptr):m_data(cstr){} //构造函数,用cstr初始化m_data,如果不使用有参构造函数,则cstr=nullptr;
private :
char* m_data;
};