C++类和对象
Posted 皓月肥波
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++类和对象相关的知识,希望对你有一定的参考价值。
C++类和对象
类和对象的基本概念
-
什么是类,一系列事物的抽象,万物皆可为类
-
类有两部分组成:属性和行为
-
属性:事物的特征--->数据类型描述
-
行为:事物的操作--->函数描述
-
-
什么是对象:类的具体化,类的实例化
-
类的特点:封装、继承、派生、多态
类的定义
-
创建语法
class 类名 //权限限定词 public: protected: private: ;
-
权限限定 作用
-
类外只能访问public属性内的东西,习惯把 public属性 叫做类外的接口
-
类外访问 类中的数据,只能通过对象访问,当然static成员除外
-
protected和private 类外都不可以访问 ,但是可以提供共有接口间接访问
-
默认属性(没有写在权限限定词下的属性)是 私有属性
-
权限限定词,只是用来限定类外的访问,并不是限定类中的访问
-
protected和private 有区别 ,继承有区别,对类外都是不可以访问
-
-
C++结构体 在一定程序可以直接 当作是类
-
默认属性是公有属性
#include<iostream> #include<string> using namespace std; class BoyFriend void print() cout << "不在限定词之下的属性,默认为私有属性" << endl; public: void printData() cout << m_name << "\\t" << m_age << endl; void initData(string name, int age); protected: string m_name; private: int m_age; ; void BoyFriend::initData(string name, int age) m_name = name; m_age = age; struct GG int num; //默认公有属性 protected: string name; private: int age; ; int main() BoyFriend Tom; Tom.initData("Tom", 20); Tom.printData(); return 0;
-
-
成员访问
-
通过提供 公有接口传参的方式初始化数据
-
通过提供 公有接口返回值的方式初始化数据
-
默认初始化
#include<iostream>
#include<string>
using namespace std;
class BoyFriend
public:
void initData(string name, int age)
m_name = name;
m_age = age;
string& getName()
return m_name;
int& getAge()
return m_age;
void print()
cout << m_name << "\\t" << m_age << endl;
protected:
string m_name;
int m_age;
;
int main()
BoyFriend Tom;
Tom.initData("Tom", 20);
Tom.print();
BoyFriend june;
june.getName() = "june";
june.getAge() = 19;
june.print();
return 0;
单链表三种创建方法
-
C语言
#include<iostream> using namespace std; struct Node int data; struct Node* next; //C语言的需要带上struct ; struct Node* createList() Node* headNode = new Node; headNode->next = NULL; return headNode; struct Node* createNode(int data) Node* newNode = new Node; newNode->data =data; newNode->next = NULL; return newNode; void insertData(Node* headNode, int data) Node* newNode = createNode(data); newNode->next = headNode->next; headNode->next = newNode; void printList(Node* headNode) Node* p = headNode->next; while (p!=NULL) cout << p->data << " "; p = p->next; int main() Node* List = createList(); insertData(List, 10); insertData(List, 20); insertData(List, 30); printList(List); return 0;
-
C++半封装
#include<iostream> using namespace std; struct Node int data; Node* next; //c++不需要带上struct ; class List public: void createList() headNode = new Node; headNode->next = nullptr; void insertData(int data) Node* newNode = new Node; newNode->data = data; newNode->next = headNode->next; headNode->next = newNode; void printList() Node* pMove = headNode->next; while (pMove != nullptr) cout << pMove->data << " "; pMove = pMove->next; cout << endl; protected: Node* headNode; //用一个指针表示整个表头 ; int main() List* pList = new List; //C++第一步:创建对象 pList->createList(); pList->insertData(10); pList->insertData(20); pList->printList();
-
C++
#include<iostream> using namespace std; class Node public: Node*& getNext() return next; int& getData() return data; protected: int data; Node* next; ; class List public: void createList() headNode = new Node; headNode->getNext() = nullptr; void insertData(int data) Node* newNode = new Node; newNode->getData() = data; newNode->getNext() = headNode->getNext(); headNode->getNext() = newNode; void printList() Node* p = headNode->getNext(); while (p != nullptr) cout << p->getData() << " "; p = p->getNext(); cout << endl; protected: Node* headNode; //用一个指针表示整个表头 ; int main() List* pList = new List; //C++第一步:创建对象 pList->createList(); pList->insertData(10); pList->insertData(20); pList->printList();
修改数据
-
C语言
-
修改(0级)普通变量 传入一级指针(普通变量地址)
-
修改该一级指针,传入二级指针
-
修改该二级指针,传入三级指针
-
-
C++
-
通过引用传参
-
#include<iostream>
using namespace std;
//C++二级指针的创建
/*
int** createArray2D(int row, int cols) //采用返回值的方式
int** pArray =new int*[row];
if (pArray == NULL)
return NULL;
for (int i = 0; i < row; i++)
pArray[i] = new int [cols]; //给一级指针申请
return pArray;
*/
void createArray2D(int**& p, int row, int cols) //传参的方式需要带引用才可修改
p = new int* [row];
if (p == nullptr)
return;
for (int i = 0; i < row; i++)
p[i] = new int[cols];
//C语言修改二级指针,传入三级指针
void createArray(int*** p, int row, int cols)
*p = new int* [row];
for (int i = 0; i < row; i++)
(*p)[i] = new int[cols];
void deletePoint(int**& p,int row, int cols)
for (int i = 0; i < row; i++)
delete[] p[i];
delete[] p;
void testArray(int** p, int row, int cols)
for (int i = 0; i < row; i++)
for (int j = 0; j < cols; j++)
p[i][j] = i * j;
cout << p[i][j] << "\\t";
cout << endl;
int main()
//int** p = createArray2D(4, 3);
int** p = nullptr;
createArray2D(p, 4, 3);
testArray(p, 4, 3);
deletePoint(p, 4, 3);
return 0;
以上是关于C++类和对象的主要内容,如果未能解决你的问题,请参考以下文章