首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试总结-C++

,但不能被模块外其他函数访问 在模块 static 函数只可被这一模块其他函数调用,这个函数使用范围被限制在声明它模块。...起到了隐藏作用 在类 static 成员变量属于整个类所拥有,对类所以对象只有一份拷贝 在类中 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问 static...- int (*p)[10]表示数组指针,强调是指针,只有一个变量,是指针类型,不过指向是一个int类型数组,这个数组大小是10。...char a[] = “hello”; a[0] = ‘X’; char *p = “world”; // 注意p 指向常量字符串,指向是常量区 p[0] = ‘X’; // 编译器不能发现该错误运行时错误...,每次用到这个变量时候都要去重新读取这个变量值,而不是读寄存器备份。

2.1K11

CC++刁钻问题各个击破之细说sizeof

然而,void是“类型”,什么是类型呢,你可以理解成不知道存储空间大小类型。既然编译器无法确定void类型变量存储大小,那么它自然不让你声明这样变量。...为什么呢?问得好,我将尽全力对此作出解释:其实指针也是变量,只不过这个变量很特殊,它是存放其他变量地址变量。...通过特性3和特性4,我们看到了数组和指针有着千丝万缕关系,这些关系也是导致程序潜在错误一大因素,关于指针与数组关系问题我将在《C/C++刁钻问题各个击破之指针与数组秘密》一文中进行详细介绍。...那为什么sizeof(arrayB)又可以得到arraryB大小呢?...这个为什么呢?我一时半会想不到,所以还请朋友们补充! 特性8:sizeof求得结构体(及其对象)大小并不等于各个数据成员对象大小之和!

77620
您找到你想要的搜索结果了吗?
是的
没有找到

【C++】类和对象核心总结

4.大小 虽然这个类是,但是还可以创建对象不是吗?...,然而你又通过指针访问对象中数据,那就是典型指针访问,this->_a,读取访问权限冲突 } private: int _a; }; int main() { B* p = nullptr...; p->PrintB(); return 0; } 我将答案写到了代码注释里面,想要解决上面的题目,其实要明白指针成员访问指针马,那就是什么都没有,它里面是,所以无论你是对空指针进行成员访问或是解引用...编译阶段,语法检查不会报错 运行起来会发生错误。 五、类六个默认成员函数 我们上面提到过类型占一个字节类,类中什么都没有吗?还是他有但是我们看不到?...const成员讲解,看完自然就可以理解,这里函数为什么设计成这个样子。

70230

极速优化:十倍提升JS代码运行效率技巧

AOT 指的是传统编译行为,在静态类型语言(如 C、C++、Rust)和某些动态类型语言(如 Go、Swift)中得到了广泛应用,由于能提前看到完整代码,编译器/语言运行时可以在编译阶段进行充分优化...比如在 v8 里,js 堆指针和 SMI 小整数类型(small intergers)是通过 Tagged Pointer 来表达和引用,区别就在于最低一位是不是 0 来决定其指针类型: 对象指针(32...({}) 和 %DebugPrint(123) 来看看其指针数值是不是整数,然后你会发现所有对象指针数值都是奇数 Tagged Pointer ( 实际上 heap 都是奇数 heapdump 里也能看到这个细节...1. assumption 被打破时候不会 crash / 硬件错误 / 段错误吗?... in-object properties 访问了,这也是这个技术为什么叫做 Inline Cahce (ICs) 了。

33650

C++ 万字长文第二篇---拿下字节面试

大小 在 C++ 中规定类大小不为 0,类大小为 1,当类不包含虚函数和非静态成员时,其对象大小也为 1。若存在虚函数,则需要存储一个虚函数指针大小,在 32 位上为 4 字节。.../* (TYPE*)0 将零转型成 TYPE 类型指针 ((TYPE*)0->MEMBER) 访问结构体中成员 &((TYPE*)0->MEMBER) 取出数据成员地址,也就是相对于零偏移量 (size_t...define 只是简单替换功能,没有类型检查功能,const 有类型检查功能,可以避免一些错误。 define 在预编译阶段就替换掉了,无法调试,const 可以通过集成化工具调试。..."重定义" 错误,可以通过 #ifndef 来避免这个错误。...如果子类对象赋值给父类变量,则使用该变量只能访问子类父类部分。 如果反过来,这个子类变量如果去访问扩充成员变量,就会访问不到,造成内存越界。

1.4K20

面试常考知识点总结——面试必看

在模板static函数只可被这一模块其他函数调用,这个函数适用范围被限制在声明他模板 在类中static成员变量属于整个类所拥有,对象所有对象只有一份复制 在类中static成员函数属于整个类所拥有...,这个函数不接收this指针,因而只能访问static成员变量 引用和指针有什么区别?...C语言没有提供数组下标越界检查,如果在程序中出现数组下标访问超出数组范围,在运行过程中可能会内存访问错误指针非法访问。...指针保存了一个非法地址,通过这样指针访问所指向地址时会产生内存访问错误。 什么函数不能声明为虚函数? (1)不能被继承函数。 (2)不能被重写函数。...内联成员函数:内联函数是在编译时展开,而虚函数是为了实现多态,是在运行时绑定。因此内联函数和多态特性相违背。 静态成员函数:首先静态成员函数理论是可继承

82020

C++基本概念_c语言 c++区别

答:为了对用户自定义数据类型数据操作与内定义数据类型数据操作形式一致。 18. 不允许重载5个运算符是哪些? 答: 1. .*(成员指针访问运算符号) 2....C++中类型为private成员变量可以由哪些函数访问? 只可以由本类中成员函数和友员函数访问 48....而sum_b 一直是0 (2)在模块static全局变量可以被模块所用函数访问,但不能被模块外其它函数访问; (3)在模块static函数只可被这一模块其它函数调用,这个函数使用范围被限制在声明它模块...; (4)在类中static成员变量属于整个类所拥有,对类所有对象只有一份拷贝; (5)在类中static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问static成员变量...ASSERT()是一个调试程序时经常使用宏,在程序运行时它计算括号表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。

2.5K30

《逆袭进大厂》第二弹之C++进阶篇59问59答(超硬核干货)

2) 在模块static全局变量可以被模块所用函数访问,但不能被模块外其它函数访问; 3) 在模块static函数只可被这一模块其它函数调用,这个函数使用范围被限制在声明它模块;...4) 在类中static成员变量属于整个类所拥有,对类所有对象只有一份拷贝; 5) 在类中static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问static成员变量...6) const成员函数可以访问非const对象非const数据成员、const数据成员,也可以访问const对象所有数据成员; 7) 非const成员函数可以访问非const对象非const...这时,如果B中有一个成员变量指针已经申请了内存,那A中那个成员变量也指向同一块内存。这就出现了问题:当B把内存释放了(如:析构),这时A指针就是野指针了,出现运行错误。...() 不用奇怪为什么指针也可以调用函数,因为这在编译期就确定了,和指针没关系; return 0; } 如果将A类中virtual注释去掉,则运行结果是: pa->func();

2.3K40

C++代码简化之道 (2):消除非必要指针

某一天逻辑调整,我们通过某种计算(比如解析配置)获得了一个 vector类型变量 v,如果v里面有元素就取第一个元素赋值给s,否则还沿用默认值"1234567"。...二叉树层序遍历: 给你一个二叉树,请你返回其按 层序遍历 得到节点值。(即逐层地,从左到右访问所有节点)。...,是因为最外层while循环判断条件是一直判断 q是否为,然而每一层遍历q 其实是不同。...来处理,在每一层遍历完成后,再从vector里把下一层节点push到已经变成队列q中。...这个指针本身是栈存储,它指向位置是堆存储区。所谓swap,只不过是交换两个容器内部指向数据指针

36120

整理了70道C语言与C++常见问答题

33 C++中类成员访问权限 C++通过 public、protected、private 三个关键字来控制成员变量和成员函数访问权限,它们分别表示公有的、受保护、私有的,被称为成员访问限定符。...在类外部(定义类代码之外),只能通过对象访问成员,并且通过对象只能访问 public 属性成员,不能访问 private、protected 属性成员 34 什么是右值引用,跟左值又有什么区别?...C强制转换表面上看起来功能强大什么都能转,但是转化不够明确,不能进行错误检查,容易出错。 37 C++类有哪些成员函数 缺省构造函数。 缺省拷贝构造函数。 省析构函数。 赋值运算符。...) 「dynamic_cast」 用于多态类型转换 执行行运行时类型检查 只适用于指针或引用 对不明确指针转换将失败(返回 nullptr),但不引发异常 可以在整个类层次结构中移动指针,包括向上转换...48 用两个栈实现一个队列功能 typedef struct node { int data; node *next; }node,*LinkStack; //创建栈: LinkStack

3K01

『设计模式』反射,反射程序员快乐!为什么我老是加班?为什么我工资不如他多?原来是我不懂反射!

动态类型语言,就是类型检查是在运行时,是不是合法要到运行时才判断,例如JavaScript就没有编译错误,只有运行错误。...在运行时判断任意一个类所具有的成员变量和方法。 在运行时调用任意一个对象方法。...当然Class类不止这三个,还封装了很多,我们常用就这三个。 RunTime运行时阶段:创建对象过程new。...关于为什么要使用private访问权限构造器,使用这个构造器不就不能外部访问了嘛,不也就无法进行实例化对象了吗?...目前是一名在校大学生,预计考研,热爱编程,热爱技术,喜欢分享,知识无界,希望我分享可以帮到你! 如果有什么想看,可以私信我,如果在能力范围我会发布相应博文! 感谢大家阅读!?

1.1K20

我揭开了「对象」神秘面纱,就这?

对象本质就是一堆属性(成员变量)和一系列方法(成员函数)组成,在讲这个之前,先补充说明一个「函数指针」。...(上面这段说法实际很不准确,因为编译器不会分配内存,编译好代码也是以二进制形式放在磁盘上,只有程序开始运行时才会加载到内存) 如果我们把函数首地址也存储在某个指针变量里,就可以通过这个指针变量来调用所指向函数了...只有这样,当你在成员函数访问成员变量时候,编译器才知道你访问是哪一个对象。 诶,别忙,按照这样说,那岂不是,如果我在成员函数访问任何成员变量,就不需要传递这个this指针?...成员变量, 那么就会导致运行时程序发生 coredump,因为我们访问了一个 NULL 地址,或者说是基于 NULL 偏移一定位置地址,这段空间绝对是没有访问权限。...这个问题解释就和上面的一样,但是这个结论不能推广到其它语言,比如 Java、Python,这些语言虚拟机一般会做一些额外检查,比如判断调用对象是否是指针等,是的话就会触发指针异常。

76610

C++从入门到精通——this指针

C++中通过引入this指针解决该问题,即:C++编译器给每个“非静态成员函数“增加了一个隐藏指针参数,让该指针指向当前对象(函数运行时调用该函数对象),在函数体中所有“成员变量”操作,都是通过该指针访问...由于 p 是一个指针,正常来说试图通过指针调用函数会导致运行时错误,但是本题并没有对指针进行解引用调用,而是直接使用cout函数,所以会正常运行。 // 1.下面程序编译运行结果是?...由于 p 是一个指针,试图通过指针调用函数会导致运行时错误,本题是对p指针解引用调用_a,所以会出现运行崩溃(即this->_a) 什么时候会出现编译报错 编译报错通常在编程过程中出现,以下是一些常见情况...在C++中,this指针指向当前对象地址,如果对象不存在,即为,this指针也将为。在访问对象成员函数时,需要先判断this指针是否为,以避免访问指针错误。...这个问题具体示例在上述题目,我们给this传入了一个指针,我们不对this指针进行解引用,程序是正常运行,我们一旦解引用程序便会报错。

20210

GoLang接口---上

它本质上是一个指针,虽然不完全是一回事。指向接口值指针是非法,它们不仅一点用也没有,还会导致代码错误。 此处方法指针表是通过运行时反射能力构建。...类型断言可能是无效,虽然编译器会尽力检查转换是否有效,但是它不可能预见所有的可能性。如果转换在程序运行时失败会导致错误发生。...T 值,ok 会是 true;否则 v 是类型 T 零值,ok 是 false,也没有运行时错误发生。...TODO:The compiler rejects assertions guaranteed to fail,类型断言总是在运行时才执行,因此它会产生运行时错误。...这个转换是在运行时进行检查,转换失败会导致一个运行时错误:这是 Go 语言动态一面,可以拿它和 Ruby 和 Python 这些动态语言相比较。

52250

c语言面试知识点总结_c语言电话面试题

在函数体,一个被声明为静态变量在这一函数被调用过程中维持其值不变。 2). 一个被声明为静态变量可以被模块所用函数访问,但不能被其他文件函数访问。它是一个本地全局变量。 3)....在模块,一个被声明为静态函数只可被这一模块其它函数调用,这个函数被限制在声明它模块本地范围使用。...对于静态成员函数,只能访问静态成员函数和静态成员变量,不能访问非静态成员函数或者变量。...extern:引用其他文件函数或变量 2、内存泄漏: 申请内存后要删除,new和delete使用 确保您不是在访问指针 malloc和free一起使用 fwrite和write区别: fwrite...但仍可使用指向抽象类指针支持运行时多态性。

82030

【C++系列(合集)】特性多又复杂?不存在!——这篇C++大全直接干碎(超级大全,精讲)

本P主要知识点有:【缺省函数】【命名空间域】【函数重载】【引用】【C++中NULL与指针区别】【内联函数】【类】【This指针】【const成员/成员函数】【static静态成员 】【explicit...(指针/别名) 五.C++中NULL与指针区别 在C++中,NULL表示“ 0 ”,实际是一个宏。 在C++中要表示 指针,使用 nullptr。 图示: 六....类静态成员即可用 类名::静态成员 或者 对象.静态成员访问 静态成员函数没有隐藏this指针,不能访问任何非静态成员 静态成员也是类成员,受public、protected、private...yes 四.static应用:“求1+2+3+...n和" 步骤: 将成员变为静态成员变量 利用访问操作符与静态成员函数GetRet()得到_ret(和) 图示: 五.static应用:...友元分为:友元函数和友元类 通俗而言:友元函数声明表达了友元函数能够访问这个权限,相当于客人(友元)函数拥有主人家钥匙(友元声明),可以随便进出主人家里,偷吃主人家里饼干(访问私有域成员

14310

一个 Java 程序员眼中 Go 语言

在C中,通过结构体时,可以用 b.a 来访问结构体成员;通过结构体指针时,可以用 b->a 访问结构体中同一成员。对于指针,试图用 b.a 访问则是语法错误。...通过结构体访问成员,与通过指针访问结构体成员等同对待,非常符合逻辑啊。...我们通过一个 nil 指针调用了方法!这是什么情况? 键入值类型,而非对象。 这就是我为什么用引号“对象”。Go保存结构体,其实是内存中一小片区域。...如果变量类型是接口,那么它就成为值指针,与此同时引用该值真正类型。 如果变量即不是接口也不是结构体指针,你无法完成同样功能:只会得到一个运行时错误。...这些在编译阶段就会被检测为代码错误,还是非常智能(虽然有时候挺闹心,我会 import 一个晚点用到包,但是在我引用这个包之前,每当我保存代码时, IntelliJ 就会自动帮我删掉这个包)。

77330

【C++】C++入门 — 类和对象初步介绍

,编译器给了类一个字节来唯一标识这个对象 类成员函数不占用对象内存区,函数分布位置为代码区,同一个类实例化所有对象共享相同函数。...硬件要求: 一些硬件平台(如ARM、x86等)指令集直接要求对某些类型数据进行对齐访问,否则会导致数据错误或触发硬件异常。例如,SSE指令在处理向量数据时就需要16字节对齐。...C++中通过引入this指针解决该问题 即:C++ 编译器给每个“非静态成员函数“增加了一个隐藏指针参数,让该指针指向当前对象(函数运行时调用该函数对象),在函数体中所有“成员变量”操作,都是通过该指针访问...只不过所有的操作对用户是透明,即用户不需要来传递,编译器自动完成 特性: this指针类型:类类型* const,即成员函数中,不能给this指针赋值。可以保护好指针内容。...如果通过一个指针调用了成员函数,如同其他间接调用一样,这是典型运行时错误,表现为“指针异常”(Null Pointer Exception)。

9910

【C++入门篇】保姆级教程篇【中】

那么既然成员函数不在类内部,如果是个类(只有成员函数,无成员变量)呢?这个时候类大小是多少呢?...三、this指针 在最开始,我们留下问题还有一个没有解决,那就是指针问题,为什么把函数放在类,就不用传指针了呢,这样还能运行吗?...那到底为什么不用指针就能访问呢?这就是不得不说一个默认存在类内部指针——this指针。...,然而我们祖师爷关注到了(可能他有时候也会犯这种错误),每次创建对象后还要专门初始化一下,那为什么不在类直接初始化呢?...,首先我们从内容来分析,将本类成员变量拷贝一份给新类,没什么问题(注意这里都是同一个类,不同对象,只要在类就能访问私有成员)。

5910

CC++常见面试知识点总结附面试真题—-20220326更新

1).堆存放动态分配对象——即那些在程序运行时动态分配对象,比如 new 出来对象,其生存期由程序控制; 2).栈用来保存定义在函数非static对象,如局部变量,仅在其定义程序块运行时才存在...不管哪种属性,类都是可以访问 public 是一种暴露手段,比如暴露接口,类对象可以访问 private 是一种隐藏手段,类对象不能访问 protected 成员: 和 public 一样可以被子类继承...a.公有继承(public) 公有继承特点是基类公有成员和保护成员作为派生类成员时,它们都保持原有的状态(基类私有成员仍然是私有的,不能被这个派生类子类所访问)。...b.私有继承(private) 私有继承特点是基类公有成员和保护成员都作为派生类私有成员(并且不能被这个派生类子类所访问)。...A f(); // 这个是不是可以看做声明了一个返回值为A函数,函数名为 f,参数无 A g(A()); // 这个是不是可以看做声明了一个返回值为A函数,函数名为 g, 参数类型为函数指针这个函数指针返回值类型

1.4K10
领券