左值右值
说到左值引用,要先明白什么是左值,左值就是储存这数据的变量, 可以获取到内存地址的变量, 这些变量取引用就是左值引用, 右值引用是不可取内存地址的操作,如,表达式,1+1 这种, 正常情况下左值引用只能绑定左值,右值引用只能绑定右值, 但是, const 关键字会让左值引用变得不同,它可以接收右值
左值具有持久的状态,有独立的内存空间,右值要么是字面常量,要么就是表达式求值过程中创建的临时对象
引用就是变量的别名, 可以通过引用来换取到变量的值,
定义:
int a = 10;
int &c = a; // 定义左值引用
int &&d = 10; // 定义右值引用
cout << c << endl; // 输出10
cout << d << endl; // 也是输出10
面向对象
跟python差不多,都使用到 class
class Student{
private:
string name; // 姓名
int age; //年龄
public:
void read(){
std::cout << "学生在看书" << std::endl;
}
};
class 定义一个类, private 就是将属性或方法私有化,只能类内部进行访问或调用, 而 public 下的属性或方法可以在实例对象中使用, protected` : 类内、子类及友元函数可访问
创建类的实例对象可以使用栈内存,也可以使用堆内存, 栈内存直接声明就行, 堆内存要new 创建
class Student{
private:
string name; // 姓名
int age; //年龄
public:
void read(){
std::cout << "学生在看书" << std::endl;
}
};
Student stu1 ; // 栈内存,返回的正常的对象
Student *stu2 = new Student; // 堆内存, 返回的是对象的指针
类外部绑定方法
可以在类的外部绑定类方法, 先在类中定义方法,然后在外部的函数中将类绑定到函数上, 如:
class Student{
private:
string name; // 姓名
int age; //年龄
public:
void read(){
std::cout << "hello c++" << std::endl;
};
void sayhi();
};
void Student::sayhi(){
cout << "hello" << cout;
}
只需要在函数名前绑定 类的名字,就可以将这个函数当做类的方法了