c++知识点

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.指针

  1. const修饰指针—常量指针
  2. const修饰常量—指针常量
  3. const既修饰指针,又修饰常量、
    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<iostream>
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;

12.

全局函数
ostream& operator<<(ostream& out, Time& t)//流插入
{
    out << t._hour << ":" << t._min << ":" << t._sec << endl;
    return out;
}
istream& operator>>(istream& in, Time& t)//流提取
{
    in >> t._hour >> t._min >> t._sec;
    return in;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值