C++学习(一)

本文详细介绍了C++中类的三种构造函数调用方式:括号法、显示法和隐式转换法,以及构造函数的分类和调用规则。同时,讲解了空对象在内存中的占用、this指针的本质和常函数的使用。此外,还涉及了静态成员变量和静态成员函数的区别,并讨论了const成员函数的含义及其对对象状态的影响。
摘要由CSDN通过智能技术生成

1、调用类的三种方法
(1)括号法
例如有个Person类
Person p1; //默认构造函数调用
Person p2(10); //有参构造函数调用
Person p3(p2); //拷贝构造函数调用
注意:
调用默认构造函数时,不要加()
如果如下调用 Person p1(); //编译器会认为这是一个函数的声明,不会认为在创建对象
(2)显示法
Person p1;
Person p2 = Person(10); //有参构造函数
Person p3 = Person(p2); //拷贝构造函数
Person(10); //这个表示创建匿名对象,当前行执行结束后,系统会立即收回掉匿名对象
(3)隐式转换法
Person p1 = 10; //相当于 Person p1 = Person(10);有参构造
Person p2 = p1;//拷贝构造
2、构造函数分类
(1)按照参数分类分为有参和无参构造,无参构造又称为默认构造函数
(2)按照类型分类分为普通构造和拷贝构造
拷贝构造的写法: Person(const Person& p){}
3、构造函数调用规则
(1)创建一个类,C++编译器默认会给每个类都添加至少3个函数:默认构造(空实现)、析构函数(空实现)、拷贝构造(值拷贝)
如果用户定义了有参构造函数,C++编译器默认不在提供无参构造函数,但是会提供默认拷贝构造函数
如果定义拷贝构造函数,则C++默认不会再提供其他构造函数
4、
class Person {
int A; //非静态成员变量,属于类的对象
static int B; //静态成员变量,不属于类的对象
void func(); //非静态成员函数,不属于类的对象
static void func(); //静态成员函数,不属于类的对象
}
5、空对象占用内存空间
空对象占用内存空间为1,C++编译器会给每个空对象也分配一个字节的空间,是为了区分空对象占内存的位置。每个空对象也会有一个独一无二的内存地址
6、this指针的本质
this指针的本质是指针常量,指针的指向是不可以修改的。类似于 Person* const this
如果在成员函数后面加const,则表示修饰的为this指向
class Person {
void FindPerson()const
{
this->value = 100;//不允许
this= NULL;//不允许
}
int value;
}
等价于const Person* const this;则表示指向和值都不可以修改
如果存在如下成员变量,则值可以修改
class Person {
void FindPerson()const
{
this->value = 100;//不允许
this= NULL;//不允许
this->value1 = 200; //允许修改
}
int value;
mutable int value1; //特殊变量,如果加了mutable,即使在常函数中,也可以改变value1的值
}
7、const修饰成员函数
(1)常函数
成员函数后面加const后我们称为常函数
常函数内不可以修改成员属性
成员属性声明时如果家mutable,则在常函数中依然可以修改
(2)常对象
声明对象前加const称该对象为常对象(const Student stu;则这种只能调用常函数)
常对象只能调用常函数

Linux基础入门教程-linux命令-vim-gcc/g++ -动态库/静态库 -makefile-gdb调试:
https://subingwen.cn/linux/gcc/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值