1.三目运算符
表达式1?表达式2:表达式3
如果1为真,则结果为表达式2的值。
如果1为假,则结果为表达式3的值。
int a = 9;
int b = 10;
int c = 0;
c = a > b ? a : b;
cout << c << endl;//结果为10
2.指针
const修饰的是指针,指针指向可以改,指针指向的值不可以改const int* p1 = &a;
const修饰的是常量,指针指向不可以改,指针指向的值可以更改int* const p2 = &a;
const既修饰指针,又修饰常量,指针的指向和指针指向的值都不可以改变const int* const p = &a;
3.new 运算符
利用new创建的数据,会返回该数据对应类型的指针
int* p = new int(10);//分配一个整型,值为10,p指向它
int* arry = new int[10];//分配一个人42个int的数组;p指向第一个int
4.引用
int a = 0;
int &b = a;
//a和b操作的是同一块内存
5.深拷贝
#include
using namespace std;
//深拷贝与浅拷贝问题
class Person
{Person(int age,int height){m_Height = new int(height);//用指针——要把身高开辟到堆区m_Age = age;}Person(const Person& p){m_Age = p.m_Age;//m_Height = p.m_Height;编译器默认实现的就是这行代码m_Height = new int(*p.m_Height);}~Person(){//将堆区开辟的数据进行释放if (m_Height !=NULL){delete m_Height;m_Height = NULL;}}int m_Age;int* m_Height;
};
6.静态成员变量 所有对象共享同一份数据 类内声明,类外初始化
静态成员函数 所有成员共享同一个函数静态 成员函数只能访问静态成员变量
//通过类名也可以访问静态成员函数func() Person::func();
7.//返回对象本身用 return *this;
8.类做友元 提前声明类 如class Building;
9.左移运算符重载
//只能利用全局函数来重载左移运算符
ostream& operator<<(ostream &cout, Person &p) //ostream返回输出流cout << p.m_A << endl;cout << p.m_B << endl;return cout;
}
10.
继承同名成员处理方式
问题:当子类与父类出现同名的成员。如何通过子类对象,访问到子类或父类中同名的数据呢?
11.同名静态成员处理方式
/ /通过类名访问 cout << "通过类名访问" << endl;
cout << Son::m_A << endl;
//第一个::代表通过类名方式访问,第二个::代表访问父类作用域下
cout << Son::Base::m_A << endl;