- List item
指针的应用:
整型变量存放数据,一级指针存放整型变量的地址,二级指针存放一级指针的地址。
*s代表p的值,**s代表a的值。
-
List item
c++中类与对象的关系: -
List item
关于this指针:
编译器对程序员自己设计的类型分三次编译:
第一,识别和记录类体中属性的名称,类型和访问权限,与属性在类体中的位置无关。(如class CGoods中的Name,Price,Total_value;)
第二,识别和记录类体中函数原型(返回类型+函数名+参数列表),形参的默认值,访问限定,不识别函数体。
第三,改写在类中定义函数的参数表和函数体,改写对象调用成员函数的形式。
调用函数时指针才会产生,调用结束指针消失。 -
List item
关于this指针的应用:
在代码中 this.Price=10错误的原因为:.的优先级比**的优先级高,程序会先执行this.Price,所以要在this.Price=10中给*this带上括号。 -
List item
指针的应用:
利用指针的好处是不用占用内存,能节省空间。
关于类模板的应用:在栈内存入几个数据,结果输出
方法为:先输入的后输出。
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
#include
using namespace std;
template //<>里面是类型
class SeqStack { //栈 先进后出
private:
Type* data; //若上列<>里面为int类型,则data就代表int,供下列代码使用。
int maxsize;
int top;
public:
SeqStack(int sz = 10):maxsize(sz),top(-1) {
data = (Type*)malloc(sizeof(Type) * maxsize);
if (data == NULL)exit(1);
}
~SeqStack() { //析构函数
free(data);
data = NULL;
maxsize = 0;
top = -1;
}
int GetSize()const { return top + 1;}
bool Is_Empty()const { return top == -1;}
bool Is_Full() const { return GetSize() == maxsize; }
bool Push(const Type& x) {
if (Is_Full())return false;
data[++top] = x;
return true;
}
Type& GetTop() {
return data[top];
}
const Type& GetTop()const {
return data[top];
}
void Pop() {
–top;
}
};
int main() {
int i = 0;//int i(0); int i=int(0);
SeqStack ist = SeqStack();
ist.Push(12);
ist.Push(23);
ist.Push(34);
ist.Push(45);
while (!ist.Is_Empty()) {
int x = ist.GetTop();
ist.Pop();
cout << x << endl;
}
return 0;
}
关于指针的应用:
#include
using namespace std;
class CGoods {
private:
char Name[20];
int Amount;
float Price;
float Total_value;
public:
//void RegisterGoods(CGoods this,const char,int,float);//输入数据
void RegisterGoods(const char*, int, float);//输入数据
//void CountTotal(CGoods *this)
void CountTotal() {
Total_value = Amount * Price;
}
//void GetName(CGoods *this,char name[])
void GetName(char name[]) { //读取商品名
strcpy_s(name, 20, Name);
}
//int GetAmount(CGoods *this) //读取商品数量
float GetAmount() {
return Amount;
}
//float GetPrint(CGoods *this) //读取商品单价
float GetPrice() {
return Price;
}
//float GetTotal_value(CGoods this) //读取商品总价值
float GetTotal_value() {
return Total_value;
}
};
//void CGoods::RegisterGoods(CGoods this,const char name,int amount.float price)
void CGoods::RegisterGoods(const char name, int amount,float price) {
strcpy_s(this->Name, 20, name);
this->Amount = amount;
this->Price = price;
}
int main01() {
CGoods c1, c2;
c1.RegisterGoods(“iphone”, 10, 6800);
//RegisterGoods(&c1,“iphone”, 10, 6800);
c1.CountTotal();
c2.RegisterGoods(“huawei”, 12, 7800);
//RegisterGoods(&c2,“huawei”, 12, 7800);
c2.CountTotal();
return 0;
} -
List item
类的缺省函数:
1.构造函数
2.拷贝构造函数
3.析构函数
4.赋值运算符
5.取值运算符
6.移动构造函数
7.移动复制
8.赋值语句
构造函数返回构建对象的地址,析构函数也有返回值。