C++ 类和对象(A)
文章目录
- 一、类与对象的初步认识
- 二、类的定义
- 1、类定义格式
- 2、访问限定符
- 3、类域
- 一、实例化
- 1、实例化概念
- 2、对象大小
- 3、内存对齐规则
- 三、this指针
一、类与对象的初步认识
1.类是对象的抽象,而对象是类的具体实例。
类是抽象的,不占用内存;而对象是具体的,占用存储空间。
2.面向过程与面向对象
C语言是面向过程的,关注的是过程中的数据与方法。
C++是面向对象的,关注的是对象’的属性与功能。
二、类的定义
1、类定义格式
1.class为定义类的关键字,Text为类的名字,{ }中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。
2.为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加_ 或者 m开头,注意C++中这个并不是强制的,只是一些惯例。
3.C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是struct中可以定义函数,一般情况下我们还是推荐用class定义类。
4.定义在类里面的成员函数默认为inline。
#include using namespace std; class Text { public: void Print() { n = 1; cout _year = year; _month = month; _day = day; } private: int n; // 为了区分成员变量,⼀般习惯上成员变量 // 会加⼀个特殊标识,如_ 或者 m开头 int _year; // year_ m_year int _month; int _day; }; int main() { Text d; d.Init(2024, 3, 31); d.Print(); return 0; } struct ListNodeC* next; int val; }LTNode; // 不再需要typedef,ListNodeCPP就可以代表类型 struct ListNodeCPP { void Init(int x) { next = nullptr; val = x; } ListNodeCPP* next; int val; }; int main() { return 0; } public: // 成员函数 void Init(int n = 4); private: // 成员变量 int* array; size_t capacity; size_t top; }; // 声明和定义分离,需要指定类域 void Stack::Init(int n) { array = (int*)malloc(sizeof(int) * n); if (nullptr == array) { perror("malloc申请空间失败"); return; } capacity = n; top = 0; } int main() { Stack st; st.Init(); return 0; } public: void Init(int year, int month, int day) { _year = year; _month = month; _day = day; } void Print() { cout // Date类实例化出对象d1和d2 Date d1; Date d2; d1.Init(2024, 3, 31); d1.Print(); d2.Init(2024, 7, 5); d2.Print(); return 0; } public: // void Init(Date* const this, int year, int month, int day) void Init(int year, int month, int day) { // 编译报错:error C2106: “=”: 左操作数必须为左值 // this = nullptr; // this-_year = year; _year = year; this-_month = month; this-_day = day; } void Print() { cout // Date类实例化出对象d1和d2 Date d1; Date d2; // d1.Init(&d1, 2024, 3, 31); d1.Init(2024, 3, 31); d1.Print(); d2.Init(2024, 7, 5); d2.Print(); return 0; }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。