第三章 类的定义与对象的创建
- 在第二章说了一些基本的关于类的知识,那么怎么去定义自己的类?
class 类名
{
..........
};
- 在这里有一个细节,就是在花括号后边有一个;(分号),这是为什么呢?类申明之后有一个";"是表明,这是一个语句的结束,如果没有,则表明语句还没有结束,那就可能会与后面的语句一起解释,会产生错误。另外在类定义之后,可以接一个对象定义列表:
class A{}a,b,c;
/*
通常,将对象定义成类的一部分是不被提倡的,这样做会让发生的操作难以理解,书写的代码会让人产生迷惑
*/
- 在类中,在继承的时候,我们总是会看到private,protected,public这三个符号,他是干什么用的呢?
class A
{
public:
//something
protected:
//something
private:
//something
};
- private,protected,public被称为访问限定符,它的具体访问权限如下:
- private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问
- protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。
- public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
- 当有继承行为的时候,他有私有继承,保护继承和公有继承,它的区别在说到继承的时候细说
- 实例化对象
struct Stdent
{
//...
};
class People
{
public:
void Eating();
void Playing();
private:
int m_age;
double m_hight;
};
int main()
{
Student s;//结构体变量
People p;//实例化对象
/*
在C语言中有结构体,它所定义的变量我们称为结构体变量,其实在C++中所谓的对象我们也可以理解为类变量,将它叫为对象大概是因为逼格够高吧(开个玩笑)
*/
return 0;
}
第四章 浅谈this指针
- 很多时候我们会看到this这个关键字,它的本质是什么呢?
- this是作为成员函数的参数隐式传递的,它不出现在参数列表中,调用成员函数的时候,会将当前对象的地址赋值给this,完成参数的传递。成员函数不能定义this形参,而是由编译器隐含的定义。
- this作为成员函数的参数,也就表示他是成员函数的一个局部变量,它的生命周期就是从开始调用该函数到函数结束。
- 具体的内容涉及到C++对象在内存中的存储。
- 什么时候使用this?
- 表达式*this通常用于从成员函数返回当前对象:
return *this;
- 防止自己给自己赋值
A& operator =(const A &a)
{
if(&a != this) //防止自己给自己赋值
{
//....
}
}
- 对象的this指针不是对象的一部分,可以通过sizeof去验证。
- 在构造函数和析构函数中也有this指针