- 博客(11)
- 收藏
- 关注
原创 类和对象- C++对象模型和this指针- 成员变量和成员函数分开存储
成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上空对象占用内存空间class Person {};void test01() { Person p; cout << "sizeof p = " << sizeof(p) << endl;}运行结果:为什么结果是1,而不是0或者其他的数字?加入我们有两个空对象p1,p2,而他们并不占用内存空间(即占用内存空间为0),那么就会产生混
2022-02-26 09:56:13
455
原创 类和对象-对象的初始化和清理-静态成员函数
静态成员函数所有对象共享同一个函数静态成员函数只能访问静态成员变量所有对象共享同一个函数class Person {public: static void func() { cout << "static void func调用" << endl; }};//有两种访问方式void test01() { //1、通过对象访问 Person p; p.func(); //2、通过类名访问 Person::func();}运行结果
2022-02-24 21:10:56
129
原创 类和对象-对象的初始化和清理-静态成员变量
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员静态成员变量特点所有对象共享同一份数据在编译阶段分配内存类内声明,类外初始化类内声明,类外初始化class Person {public: //1、所有对象都共享同一份数据 //2、编译阶段就分配内存 //3、类内声明,类外初始化 static int m_A;//类内声明};void test01() { Person p1; cout << "m_A = " << p1.m_
2022-02-18 13:45:07
617
原创 类和对象-对象的初始化和清理-类对象作为类成员
C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员#include<iostream>#include<string>using namespace std;//类对象作为类成员//手机类class Phone {public: //手机品牌名称 string m_PName; Phone(string pName) { cout << "Phone的构造函数调用" << endl; m_PName = pNam
2022-02-17 10:35:44
284
原创 类和对象-对象的初始化和清理-初始化列表
初始化列表作用:C++提供了初始化列表语法,用来初始化属性语法:构造函数( ):属性1(值1),属性2(值2)…{ }#include<iostream>using namespace std;//初始化列表class Person {public: //传统初始化操作 /*Person(int a, int b, int c) { m_A = a; m_B = b; m_C = c; }*/ //初始化列表初始化属性 Person(int a,int
2022-02-15 14:26:52
354
原创 类和对象-对象的初始化和清理-深拷贝与浅拷贝
深拷贝与浅拷贝浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作#include<iostream>using namespace std;//深拷贝与浅拷贝class Person {public: Person() { cout << "Person的默认构造函数调用" << endl; } Person(int age , int height) { cout << "Person的有参构造函数调用" &
2022-02-15 10:13:16
101
原创 类和对象-对象的初始化和清理-构造函数调用规则
默认情况下,c++编译器至少给一个类添加3个函数默认构造函数(无参,函数体为空)默认析构函数(无参,函数体为空)默认拷贝构造函数,对属性进行值拷贝构造函数调用规则如下:如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造如果用户定义拷贝构造函数,c++不会再提供其他构造函数#include<iostream>using namespace std;//构造函数的调用规则//1、创建一个类,C++编译器会给每个类都添加至少3个函数//默认构造
2022-02-14 11:16:37
156
原创 类和对象-对象的初始化和清理-拷贝构造函数调用时机
C++中拷贝构造函数调用时机通常有三种情况使用一个已经创建完毕的对象来初始化一个新对象值传递的方式给函数参数传值以值方式返回局部对象#include<iostream>using namespace std;//拷贝构造函数调用时机class Person {public: Person() { cout << "Person默认构造函数的调用" << endl; } Person(int age) { cout <<
2022-02-13 10:28:22
466
原创 类和对象-对象的初始化和清理-构造函数的分类及调用
两种分类方式:按参数分为: 有参构造和无参构造按类型分为: 普通构造和拷贝构造三种调用方式:括号法显示法隐式转换法#include<iostream>using namespace std;//1、构造函数的分类及调用//分类// 按照参数分类 无参构造(默认构造) 和 有参构造// 按照类型分类 普通构造 和 拷贝构造class Person {public: //构造函数 Person() { cout << "Person的无参
2022-02-12 10:38:56
79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人