
C++
文章平均质量分 79
如果我来了6
这个作者很懒,什么都没留下…
展开
-
[C++]关于头文件中的防卫式声明(#ifndef...#pragma once)
大家知道,我们写.h文件时,通常会加上防卫式声明,有以下两种方式:1.宏定义#ifndef _FILENAME_#define _FILENAME_//...#endif2.编译器指令#pragma once但是,为什么头文件中需要添加这种防卫式声明呢?如果没有这样的声明,会出现怎样的问题。这里,先看一个例子。– “Car.h”,代码如下(并没有添加防卫式声明):// Car.hclass Car{// ...};– “Person.h”,代码如下(包含了Car.h文件)原创 2022-01-12 09:23:04 · 476 阅读 · 0 评论 -
C++面向对象高级开发(侯捷)——类模板,函数模板及其他
staticstatic的成员不再单独属于一个对象,他是单独的保存在内存的某个地址,也就只有一份。所以在设计程序的时候要看这个东西是不是只需要一份。static函数和一般的函数一样,在内存中只有一份。静态函数没有this指针,不能像一般成员一样去访问和存取一般的成员数据,他只能处理静态的对象,静态的成员。如果class中有静态的数据,一定要在class之外进行初始化。class Account{public: static double m_rate;//只是声明而已 static void原创 2021-08-12 23:55:20 · 211 阅读 · 0 评论 -
C++面向对象高级开发(侯捷)——堆、栈与内存管理
stack(栈),heap(堆)Stack:是存在于某作用域(scope)的一个内存空间(memory space)。例如当你调用函数,函数本身即会形成一个stack用来放置它所接收的参数,返回地址,及局部对象(local object)。Heap:或称system heap,是指由操作系统提供的一块global内存空间,程序可动态分配(dynamic allocated)从中获得若干区域(blocks)。stack objects的生命期class Complex { ... };...{原创 2021-08-11 23:39:50 · 184 阅读 · 1 评论 -
C++面向对象高级开发(侯捷)——三大函数:拷贝构造,拷贝赋值,析构
三大函数:拷贝构造、拷贝复制、析构当类中含有指针,则不能用系统默认的那一套拷贝构造,拷贝赋值。需要自定义这三个函数:拷贝构造、拷贝复制、析构。string类,内部含有一个指针,以这个指针来指向任意长度的字符串数据。class String{public: String(const char* cstr =0); //普通的构造函数 String(const String& str); //拷贝构造函数 String& operator=(const St原创 2021-08-10 23:48:27 · 199 阅读 · 0 评论 -
C++面向对象高级开发(侯捷)——complex类实现
面向对象基于对象(Object Based)单个class的设计;C++中classes的两个经典的分类:class without pointer members可以使用默认的拷贝构造函数和拷贝赋值函数默认的拷贝构造函数和拷贝赋值函数由编译器根据需要自动生成,执行浅拷贝不带指针的类多半不需要析构函数class with pointer members最好是自定义拷贝构造函数和拷贝赋值函数,自定义实现深拷贝一般需要析构函数面向对象(Object Oriented)多重原创 2021-08-07 16:55:15 · 883 阅读 · 0 评论