c++类的基本定义及注意事项
01
—
类和对象
C++一切事物皆可视为对象。
对象具有属性、行为两大特征。
面向对象具有封装、继承、多态三大特性。
02
—
类的封装
封装:把对象的属性和行为封装为一个整体,对其添加权限的控制。
class MyClass{public: //公共权限 void SetProperty(string str)//行为 { TestProperty = str; } string GetProperty()//行为 { return TestProperty; }private://私有权限 string TestProperty;//属性 };
03
—
构造函数和析构函数
类在初始化的时候会调用构造函数,在释放时会自动调用析构函数。
在封装一个类的时候如果没有定义构造函数和析构函数,编译器会自动生成默认空实现的构造函数和析构函数。
class MyClass{public: void SetProperty(string str){ TestProperty = str; } string GetProperty(){ return TestProperty; } //构造函数名称和类名一致(可以有参数,并且可以重载) MyClass() { cout << "调用构造函数" << endl; } //析构函数在类名添加“~”并且没有参数,不可以重载 ~MyClass() { cout << "调用析构函数" << endl; }private: string TestProperty;};
04
—
构造函数的重载及调用
构造函数可以接收参数,并且可以重载
class MyClass{public: void SetProperty(string str){ TestProperty = str; } string GetProperty(){ return TestProperty; } //构造函数名称和类名一致(可以有参数,并且可以重载) MyClass() { cout << "调用构造函数()" << endl; } //具有参数的构造函数 MyClass(string str) { TestProperty = str; cout << "调用构造函数(string)" << endl; } //拷贝构造函数 MyClass(const MyClass &data) { TestProperty = data.TestProperty; cout << "调用拷贝构造函数" << endl; } //析构函数在类名添加“~”并且没有参数,不可以重载 ~MyClass() { cout << "调用析构函数" << endl; }private: string TestProperty;};void NewClassTest(){ //局部变量,定义在栈上,方法执行结束后自动释放 MyClass cls; MyClass cls2("PPP"); MyClass cls3(cls2);}int main(){ NewClassTest(); system("pause");}
输出结果:
04
—
类和结构体的区别
类和结构体唯一的区别就是权限的默认值不同。
类默认访问权限:private
结构体默认访问权限:public