>百科大全> 列表
在C++中,定义变量时直接初始化与先定义,后赋值在时间复杂度上有区别吗
时间:2025-06-18 01:48:59
答案

如果是简单类型,比如int等,那么定义的时候没有初始值,那么只是在stack上分配空间,并没有额外初始化动作。

然后再赋值就会把值存进去。

两个动作都很快,如果值是一个常量的话不排除传值情况下编译器直接用常量代替变量来优化。

如果是复杂类型,那就比较复杂了。

对比一下三种情况:Aa;a = b、

2. A a = b、A a(12, 13)、第一种,属于说的先定义后声明。

如果类型A存在默认构造函数A:A,那么相当在stack上分配了A的空间并且调用了默认构造函数A::A()如果此后再初始化:a = b,那么, a. 如果A::operator等于存在就会调用赋值函数、否则会进行默认赋值,拷贝b的所有成员到a因此可能存在两次初始化操作

不排除这些操作被编译器优化掉,比如如果A:A是一个内联函数那很有可能被优化。

在C++中,arguments和parameters都有参数的意思,二者有什么区别
答案

一般说来,两个是可以互换的。

但是 C 程序员的习惯是:parameter 是参数,而 argument 是参数的值。

也就是说,函数原型的参数列表,是 parameter list,比如,int sum(int a, int b);而当使用的时候10 和 20 则是 argument为int sum; sum=sum(10, 20);这个习惯也影响了很多其他语言的程序员。

如果要混合两者的意义,一般用 argument,而 parameter 则比较少用。

argument 有的时候也被称作 actual parameter。

对应的中文术语是parameter为形参,argument为实参。

当定义方法时,传递到方法中的变量称为参数。

当使用方法时,传给变量的值称为引数。

在C++中为什么要出现对象成员
答案

面向对象使编程更加的抽象化和具体化,更加利于编写程序,对象成员是面向对象的一种体现,以下是面向对象的优点:面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计,在面向过程程序设计中,问题被看作一系列需要完成的任务,函数用于完成这些任务,解决问题的焦点集中于函数,其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。

在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问,每个函数都可以具有它们自己的局部数据。

这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证

面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点。

数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰。

通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度。

结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程。

推荐
© 2025 雅普电脑网