总结:
各标号解析(要点提示)
#0 类可以被名称空间包裹,使用时需要声明名称空间 #1 private 表示私有成员,不允许通过Person.lname / Person.fname[ ]常规方式访问。 #1 private 为默认,若不标出,也默认为private。 #2 定义常量使用 static const type variname value 形式。 使用static是因为,类在实例化啊之前是没有存储空间的,需要static来让编译器分配存储空间 #3 public 表示公有成员,可以通过公有成员访问私有成员。 #4 直接在类定义处写实现方法,则表示此为内联函数(inline)。 #5 与类同名函数称为构造函数,实例化类时(创建对象)被自动调用。 #5 构造函数可以重载。 #6 函数后增加const,表示此函数不改变该对象的数据成员(lname / fname)。 #7 构造函数允许不用返回值(也可以有返回值)。 #7 定义成员函数时,必须使用域解析符号:: #8 与类同名且前面有个‘~’,称为析构函数。 #8 析构函数在类访问过期(对象不再使用)后自动调用,(若代码中无析构函数,则类会默认创建析构函数)。 #x 同类之间可以直接赋值 #x 构造函数和析构函数不是必须的,但当未作定义时,系统也会默认生成空的构造/析构函数。 #x 对象是类的实例,对象的数据是独立的,函数是共用的。
定义类
Person.h
namespace PERSON{ #0
class Person{
private: #1
static const int LIMIT = 25; #2
string lname;
char fname[LIMIT];
public: #3
Person() #4
{
lname = "";
fname[0] = '\0';
}
Person(const string &ln, const char *fn = "Heyyou"); #5
void show(void) const; #6
void FormalShow(void) const;
~Person();
};
}
实现类
Person.cpp
namespace PERSON{
Person::Person(const string &ln, const char *fn) #7
{
lname = ln;
strcpy(fname, fn);
}
void Person::show(void) const
{
cout << fname << lname << endl;
}
void Person::FormalShow() const
{
cout << lname << fname << endl;
}
Person::~Person(void) #8
{
}
}
使用类
main.cpp
#Include "Person"
int main(void)
{
using namespace PERSON;
Person a;
Person b("Jcak");
Person c = Person();
Person d = Person("Jack");
Person e[3] = {
Person();
Person("Jack")
Person();
}
a.show();
}
this 指针
this指针指代当前对象 使用时,一般来说,返回一个类,都是实例。 所以 ”成员函数定义时返回引用,实现时 返回 *this
|