c******g 发帖数: 4889 | 1 习惯了其实很好用的,如果只限于原帖里的例子,要我会这么写:
let result = compute(2, toThePowerOf: 10) //读起来很自然
func compute(_ base: Int, toThePowerOf exponent: Int) -> Int {
var result = base
for _ in 1..
result = result * base
}
return result
}
函数的第一个parameter往往不需要argument label,因为函数名往往在语义上已经包
括其功能。
同时有argument label和parameter name的存在使得函数内部make sense,外面调用也
自然,增加了可读性。 |
|
f****y 发帖数: 70 | 2 请问vc里向matlab函数传数值参数或字符串, 怎么做?这个参数是在vc里定义的变量。
比如vc代码如下:
.....
int n=5;
engEvalString(ep,"calculate(’n‘)"); //calculate(x) 是matlab函数
’n‘这个地方怎么写?.
如果n是字符串呢?
|
|
r******n 发帖数: 351 | 3 用 fmincon 优化
x = fmincon(&myfun,x0,[],[],[],[],[],[],&mycon)
非线性的约束条件做成函数.
function [c,ceq] = mycon(x)
c = ... % Compute nonlinear inequalities at x.
ceq = x(1)+x(2)-b % Compute nonlinear equalities at x.
现在的问题是,这个约束条件mycon里有一个需要不断改变的参数b。怎么能把这个参数
从外面传到这个约束条件的函数mycon里面。 |
|
e*****m 发帖数: 320 | 4 时不变系统,假定有一组输入x(t)和输出y(t)已知。系统的传递函数未知。
通过一些其他知识和方法,可以估计系统的传递函数为:
h(t)=Aexp(-t/B) 其中A B为待定参数。
估计出来的h(t)与x(t)卷积,产生的y_estimate(t)必然与y(t)有一些误差。
按照一定的评判标准,必然可以得到一个最优值,获得A_estimate和B_estimate
这里面的问题是:有没有办法获得A_estimate和B_estimate这两个估计值的置信区间?
谢谢! |
|
q*d 发帖数: 22178 | 5 层子模型前后-关于声称以马 克 思主义哲学指导物理学研究的案例分析
关 洪
(中山大学物理系,广州 510275)
摘要:本文回顾了从20世纪50年代初期开始,在我国对“物理学中的唯心主义”进
行的多次批判运动。特别是依据“百花齐放”的方针,对层子模型前后声称以马克思主
义指导基本粒子理论研究,并指责同行物理学家为“唯心主义”的一些正式发表的言论
进行了案例分析。
关键词:马克思主义哲学 唯心主义 双百方针 层子模型
[作者简介] 关洪(1935-),男,中山大学物理系教授,主要研究理论物理,物
理学史和科学哲学。
一 我国对“物理学中的唯心主义”批判的启动和推进
中国科学院主办的刊物《科学通报》继在1951年6月号登载了从苏联《哲学问题》
翻译过来的《反对数理逻辑中的唯心主义》的文章之后[1],又在1952年8月号登载从苏
联翻译过来的关于量子力学哲学问题的几篇文章[2]。例如,哲学家奥密里扬诺夫斯基
1951年在《哲学问题》上发表的《反对量子力学中的唯心主义》里宣称,作为“一切科
学之基础的马克思列宁主义,……在物理学部门里,也同样是行动的指南。”此外还有
物理学家布洛欣采夫195... 阅读全帖 |
|
l******d 发帖数: 530 | 6 比如printf()这种变长参数个数的函数,调用是stack里是需要push哪些东西的,跟普通的定长
参数函数调用有何不同呢?谢谢 |
|
d***p 发帖数: 128 | 7 以前刚好写过printf这个函数。“”内的参数是以字符串的形式存在,到stack的是它
的地址,当然你可以随便写内容了。之后的参数就反方向入stack。再之后PC,FP,函数
里的变量入stack。欢迎讨论 |
|
t******4 发帖数: 134 | 8 加一个parent指针? or
加一个域标识root?
如果不能修改数据结构
送进函数之前特殊处理root,处理完进去递归
:目的是对根的处理和其他层不一样,需要保留判断条件。
:送之前存一个当然是搞笑了。
:多一个参数可行,就是看起来怪怪的,调用的时候传递两个相同参数。如果只允许一
个参数,有没有别的办法? |
|
|
J*****n 发帖数: 4859 | 9
我有一些离散的点(x_i,y_i),先用某种曲线拟合的技巧(样条,多项式回归)得出其拟
合函数f(x),然后再把f(x)传到g中,供g使用。
现在的问题是f的参数个数不一定,比如用多项式回归,那么f中不但要传x_i的值,还
要传一个多项式的degree:
double f (vector& x_i, const double& degree);
如果用三次样条插值,虽然不需要degree了,但是除了x_i外还要传一个vector进去用
于存放三次样条的knots(边界点):
double f (vector& x_i, vector& knots);
作为g函数本身,并不知道用户用哪种方法去拟合,也就是不知道f所带的参数是怎么样
的。
请教该如何解决这个问题。
谢谢。 |
|
l******d 发帖数: 530 | 10 比如printf()这种变长参数个数的函数,调用是stack里是需要push哪些东西的,跟普通的定长
参数函数调用有何不同呢?谢谢 |
|
S**I 发帖数: 15689 | 11 对参数个数可变的函数,调用结束后要由caller function来clean up stack。至于往
stack上push的东东,和参数个数固定的函数调用应该没什么不同,至少在Windows平台
上是如此。
普通的定长 |
|
g*********e 发帖数: 42 | 12 他是指用什么方法来优化函数中的参数吧?
如果是的话,建议你查查optimization;
以前常用matlab,现在忘了,不过记得有
个函数可以实习这个.
发信人: rossby (五十岚已夜), 信区: Computation
标 题: Re: matlab参数拟合
发信站: BBS 未名空间站 (Thu Apr 26 17:56:02 2007), 转信
log (f(x) -c) = log a - x/b |
|
i**s 发帖数: 332 | 13 好像有一个SAS函数,如果参数1 non-missing, 取参数1的值, 否则取参数2的值. 想不
起来是啥函
数了, 有知道的告诉一下? 谢. |
|
n********r 发帖数: 65 | 14 比如一个类A,有私有函数 f(),
两个public的函数 a(), b(),
a() 调用 类A中的私有函数f();
b() 调用 外部的一个函数也叫 f();
两个函数在参数类型上没有差别,
该如何做,我发现在类A内的函数调用 f()
时总是调用的类内的那个 f(); |
|
j**u 发帖数: 6059 | 15 我很奇怪的是,要拟合怎么也至少知道个要拟合的函数大概。这样只知道曲线,再看什
么函数有类似的性质,这样的拟合有点怪。如果我是审稿人,我就回问,你怎么确定就
是这个函数,难倒没有别的函数有类似的性质吗?就算是这个函数,函数的每个参数的
意义又是什么? |
|
q*******i 发帖数: 353 | 16 比如子函数(void)内用主函数通过参数传过来得指针malloc了空间,然后做
了一些操作之后,返回主函数,在主函数里面再free这个空间。这样做理论上应
该没问题,但是是不是风险很大?是很糟糕的设计?比较好的方法是什么呢?
(用指针的指针传递?) |
|
i****d 发帖数: 255 | 17 不太明白楼上的反问。
要我说,至少在C里面,仅传递函数名本身就可以了,因为不会有函数同名或者重载的
问题。函数名本身就可以唯一的代表一个函数,不再需要在传递函数指针时还带上所有
的参数类型。
对吗? |
|
O*******d 发帖数: 20343 | 18 我用auto_ptr很多。 但要注意一些细节。
1。auto_ptr一般不要用来做函数参数。 因为ownershi会转移到函数里面去。函数一旦
完成,内存释放,外面的auto_ptr
就成了悬浮的指针了。
2。函数可以return一个auto_ptr。 这种用法比较安全。 一般原则是,从较小的scope
往较大的scope传递,而不是相
反。 所以在函数内部使用时,不要把auto_ptr传到code block里去,但可以反向传递。
3。如果在函数里需要allocate内存,用auto_ptr比较好,一来不会忘记delete,二来
是exception safe。 |
|
H***a 发帖数: 735 | 19 According to LZ "子函数(void)内用主函数通过参数传过来得指针malloc了空间,
然后做了一些操作之后,返回主函数,
在主函数里面再free这个空间", there I just created a critical example.
Caller - main function - might not need to use the array at all since all
the operations can be done in
subroutine. In this case, it's unfair to let main function free the resource.
That's just my 2 cents. |
|
N******K 发帖数: 10202 | 20 我估计你喜欢 return shared_ptr 或者 把 shared_ptr 作为函数参数
比如这样的例子 http://stackoverflow.com/questions/395123/raii-and-smart-pointers-in-c
void setLog(const Foo & foo, const Bar & bar) {
shared_ptr file(new File("/path/to/file", File::append));
foo.setLogFile(file);
bar.setLogFile(file);
}
foo::setLogFile(shared_ptr input_file)
{ member_of_foo=input_file;
}
bar::setLogFile(shared_ptr input_file)
{ member_of_bar=input_file;
}
类的成员变量 也当做函数输出
比如 setLog 的输入是 const Foo & foo, con... 阅读全帖 |
|
q*c 发帖数: 9453 | 21 这个就很明显~ 不对
a.name() 函数内部生成一个对象,对象的饮用返回前拷贝进临时变量。然后函数内部
那个对象饮引用丢失。 这个临时变量在等号左面, 然后被赋值为 abc , 导致他本身
的引用丢失, 然后新得到的 abc 也立刻丢失。
这样函数内部产生的对象丢失,临时对象丢失,abc 赋值的对象丢失。
这样到底要干啥?
我猜测是想改变函数内部某个全局变量的状态, 但是这本身就不是好主义。
或者是要重新定义函数? |
|
m******r 发帖数: 1033 | 22 多谢回答。 这个作者写了三本书,都是关于R的, meta programming, OOP, 还有这本
。 欧洲人,写得可以说比较通俗易懂(比较而言),有时还有图形解释,没找到任何
语法,拼写错误,在这类书里面还是少有的。 反正比R文档强。
R这个东西初学者两大难点,1,每个函数有自己的环境,造个函数就造了个环境; 2.
就是把函数当参数传递。 1其实好理解,类似于local/global 变量; 2如果没有工具
看函数里面的东西,光凭脑子想,就太抽象了。 好比中学讲解什么是f(x), 定义就是
一句话,讲解集合是如何映射到另外一个集合的, 没人听得懂,听懂也不会用。 你得
多讲讲 y=3x , 再听不懂, 就得讲3乘2。
R所谓‘美丽’的地方就是很多代码直接书写f,g,h ,有种看数学书的感觉, ‘丑陋’
之处就她不给你看三乘二是如何实现的. 好比美女,不给你看丑陋的地方,总是让人不
过瘾。
packet |
|
c****p 发帖数: 6474 | 23
is
static
1. 文件内可见?
2. 在全局变量区分配空间?
3. 文件内可见?
them?
理论上函数传参都是对实参的数据拷贝(而不是实参本身)进行操作。因而对函数参数
的任何修改在函数返回后都不会影响实参的值。传值不说;传址实际是传递某变量所在
的内存地址,通过修改该地址指向的内存空间就可以实质上修改该变量的值。一般情况
下,需要在函数中修改变量值的行为都会使用传址。
const,不可修改,一般放在只读数据区(.rodata),尝试对其修改可能会引发段错(好
像编译器实现决定的);volatile,访问被其限定的变量时必须从内存中获取,实质上
使该变量成为non-cachable,常见于被I/O访问的内存空间。
大多数十进制小数转化成二进制存储时会有截断误差,表面上相等的两个浮点数实际并
不相等,一般用误差小于某阈值来判定相等。
not at all
stack:FILO,可重入式函数必须的结构;heap,memory pool,由OS管理,用户通过
malloc/free和new/delete实现动态内存的申请和释放。
pree
这个不懂,猜下:task不可打断当前in... 阅读全帖 |
|
c****p 发帖数: 6474 | 24
is
static
1. 文件内可见?
2. 在全局变量区分配空间?
3. 文件内可见?
them?
理论上函数传参都是对实参的数据拷贝(而不是实参本身)进行操作。因而对函数参数
的任何修改在函数返回后都不会影响实参的值。传值不说;传址实际是传递某变量所在
的内存地址,通过修改该地址指向的内存空间就可以实质上修改该变量的值。一般情况
下,需要在函数中修改变量值的行为都会使用传址。
const,不可修改,一般放在只读数据区(.rodata),尝试对其修改可能会引发段错(好
像编译器实现决定的);volatile,访问被其限定的变量时必须从内存中获取,实质上
使该变量成为non-cachable,常见于被I/O访问的内存空间。
大多数十进制小数转化成二进制存储时会有截断误差,表面上相等的两个浮点数实际并
不相等,一般用误差小于某阈值来判定相等。
not at all
stack:FILO,可重入式函数必须的结构;heap,memory pool,由OS管理,用户通过
malloc/free和new/delete实现动态内存的申请和释放。
pree
这个不懂,猜下:task不可打断当前in... 阅读全帖 |
|
g******g 发帖数: 289 | 25 如果有一个复杂函数f(a, b) = g(a)*h(b),a和b是两个独立的参数,这样的函数叫什
么函数?如何证明一个复杂函数f(a, b)可以分解为g(a)和h(b)? |
|
u**r 发帖数: 663 | 26 也就是说只要参数个数匹配,参数顺序可以通过调整template类型顺序实现。
那如果同时存在两个构造函数 B(int, double), B(double, int),是不是就不行了呢
?当然这种定义没啥实际意义。 |
|
b******i 发帖数: 914 | 27 我觉得utar的意思是,如果B里面本身存在参数个数相同,但implementation不同的多
个ctors,那么如果按照thrust的实现,在D里面,按照参数个数的话,相应template只
有一个。那么如何调用B里面多个不同的ctors呢?
另外,如果B的ctors参数个数也会be revised in the future,如其中参数最多的ctor从原来的10个参数
增加到100,D的实现里面岂不是要增加90个ctors? |
|
b***y 发帖数: 2799 | 28 ☆─────────────────────────────────────☆
wmbyhh (wmbyhh) 于 (Wed Mar 12 16:46:55 2008) 提到:
请问是不是所有编程语言的函数调用,Matlab/C++/Java/Delphi都是传递形参?
而非实参?就是说传递的参数只传递值,其参数本身不改变?
包含Matlab?
☆─────────────────────────────────────☆
vvs (vvs1991) 于 (Wed Mar 12 17:28:22 2008) 提到:
C++ 如果加了reference,就把自己给传进去了,你就可以改变它。java好像永远是传
值,不过因为对象是reference,所以,传进去的obj都是可以乱改的。
☆─────────────────────────────────────☆
PaulPierce (Paul) 于 (Wed Mar 12 21:01:46 2008) 提到:
java is pass by value, don't get messed
☆────── |
|
s*****k 发帖数: 604 | 29 为什么有的函数声明了参数类型但是没用变量名呢?
比如这段代码
template
inline _Tp* allocate(ptrdiff_t __size, _Tp*) {
set_new_handler(0);
_Tp* __tmp = (_Tp*)(::operator new((size_t)(__size * sizeof(_Tp))));
if (__tmp == 0) {
cerr << "out of memory" << endl;
exit(1);
}
return __tmp;
}
那个 _Tp* 后面就没有跟变量名 |
|
s*****k 发帖数: 604 | 30 不用干吗把函数声明称那个样子?
输入一个参数不就行了?
难道是为了符合标准吗? |
|
s*i 发帖数: 388 | 31 java如何保护传入的参数不被函数改动?
类似cpp的
func(SomeDataStructure m_ds) const{}
如何实现? |
|
S**I 发帖数: 15689 | 32 多谢指正。win32上argument的pass,stdcall和cdecl是往stack上push,fastcall和
thiscall是先用寄存器,然后再往stack上push。但是只有cdecl是调用函数clean up
stack,所以参数个数可变的函数调用应该只能是cdecl。
of
in |
|
d*******i 发帖数: 80 | 33 试试这个函数,跟你的曲线有相同的特性
y=Wo-a*Wo*(d/pi)*ln(b+exp((x-pi/d)/a)+exp((pi/d-x)/a))
Wo, pi/d是你的图里的参数,a, b是可调拟合参数。(a<-1)
Y轴的偏离Omega=a*Wo*(d/pi)*ln(b+2) |
|
y**x 发帖数: 117 | 34 R 中多数函数参数是可以同时用SCALE,或者向量的。
Python的 list comprehension 在R中基本就是 FUNC(X).
你自己定义的函数要考虑你的参数是不是可能是 SCALE, VECTOR, 或者 MATRIX.
我对PYTHON 不是很了解,但是我觉得 R 和 numpy 更近。 你用numpy的时候,还需要
很多list comprehension ?
R |
|
N**k 发帖数: 16 | 35 发信人: kr (晨·On your mark), 信区: BM_Train1
标 题: 超级文章搜索参数及函数(zz from 水木社区)
发信站: BBS 科苑星空站 (Sun Jul 3 23:17:50 2005), 站内
按Ctrl+G并选择7进入超级文章选择功能。
改进功能如下:
1. 支持中文语法。中文语法的重要几个关键字及其意义如下:
关键字 含义 相应符号
a且b a,b同时成立 a&&b
a或b a,b有一个成立 a||b
a是b a,b值相同 a==b
a不是b a,b值不同 a!=b
a包含b a字符串存在b sub(b,a)
a的长度 a字符串的长度 len(a)
2. 支持中文变量。重要的几个中文变量如下:
变量名 含义 相应变量名
标题 |
|
l*******o 发帖数: 791 | 36 楼上说的对。
问题出现在你的test函数,test函数接受的是一个以值传递的指针。比如说一个经典的
swap(int a, int b)的例子,必须写成swap(int * a, int * b)或者引用才能改变外
界传入函数参数的值。同理如果你想改变一个指针的值,你需要用对一个指向这个指针
的指针进行操作,
所以test必须写成
void test (char * * p)
{
*p = new char[10];
memset((*p), 'A', 10);
}
然后main函数写成
int main(int argc, char *argv[])
{
char *k;
test(&k);
cout << k << endl;
}
不过一般倾向于使用引用即reference这样你就不会混淆,reference版本如下
void test( char * & p )
{
p = new char[10];
memset(p, 'A', 10);
int main(int argc, char *argv[])
{... 阅读全帖 |
|
m****7 发帖数: 69 | 37 还是公司的老人了,C#,代码写得巨烂无比,每次review他的代码都跟吃屎一样恶心。
举几个例子吧:
1. 你见过一个if statement的条件部分占三十多行吗?大概五十个表达式用||和&&连
接在一起的
2. 你见过把所有用过的变量都做成成员变量吗?一百多个成员变量,看着都壮观,还
都没有统一的地方初始化。你看他用某个变量的时候都替他担心,不读他所有的代码,
谁知道这个变量当前有没有合法的值啊
3. 最极品的是,他的所有函数都没有任何reuse的价值,因为都是跟整个逻辑强烈相关
的。后来我发现他是先把所有的逻辑实现在一个函数里,然后按照每二三十行一个函数
改过来,所有用到的变量不是成员变量就是函数参数,还都是by ref的
最后说一说mit这个验证码真是垃圾啊,敲了半天一点发表,验证码不对,再回去,敲
得东西全没了。这是俺第三次输这篇文章了。别说我闲的慌,我实在是宁愿多敲一次也
不愿意review他的代码啊 |
|
q*******i 发帖数: 353 | 38 就调用一次啊,在函数外先 arraycopy(b,a)。然后把数组b传递给函数,在函数中
修改数组b的值同时,a的值也被修改,我想达到只在函数中修改b的值,a的值不变,除
了你刚才说的办法,还有没有其他更高效的办法? |
|
b****e 发帖数: 906 | 39 DBLE似乎只用于转换成REAL*8的格式,用哪个内部函数怎么才能将任意的格式专为标准
的REAL*16呢?
同时,似乎DBLE这个内部函数的编程也颇为不易的,主要是输入的参数的格式是不定的
,那怎么自己去编写这个函数? |
|
b********r 发帖数: 1080 | 40 【 以下文字转载自 Computation 讨论区 】
发信人: bankbuster (恭喜发财), 信区: Computation
标 题: C++里用Blas/Lapack的问题
发信站: BBS 未名空间站 (Tue Aug 9 14:57:49 2011, 美东)
我用atlas,程序里简单调用zgeev函数。编译没有错,没有警告。运行也不出错,但结
果完全不对。似乎函数根本没有被调用。
另外哪里能找到在C或者C++下调用Blas/Lapack函数的具体格式?我这里函数参数还是
在网上搜的。完全没有相关的手册。难道Blas/Lapack只是给fortran用的?
程序如下
#include
#include
#include
#include
#include
using namespace std;
typedef complex dcomplex;
extern "C" void zgeev_( char* jobvl, char* jobvr, int* n, ... 阅读全帖 |
|
l********a 发帖数: 1154 | 41 我接受一个double arr[],经过运算,输出一个double,是objective function的值.
多谢几位.
fakeshawn朋友回复的这个模板我没大看明白
这样输入,c++会认为func是个函数吗?如果这个函数不存在呢?
调用的办法是: double obj = objectFunc(testObjFunc);
这样对吗?如果已经有一个函数定义为 double testObjFunc(...);
可是x[]参数怎么传递进去? |
|
b********r 发帖数: 1080 | 42 我用atlas,程序里简单调用zgeev函数。编译没有错,没有警告。运行也不出错,但结
果完全不对。似乎函数根本没有被调用。
另外哪里能找到在C或者C++下调用Blas/Lapack函数的具体格式?我这里函数参数还是
在网上搜的。完全没有相关的手册。难道Blas/Lapack只是给fortran用的?
程序如下
#include
#include
#include
#include
#include
using namespace std;
typedef complex dcomplex;
extern "C" void zgeev_( char* jobvl, char* jobvr, int* n, dcomplex* a,
int* lda, dcomplex* w, dcomplex* vl, int* ldvl, dcomplex*
vr, int* ldvr, dcomplex* work, int* lwork, double* r... 阅读全帖 |
|
b********r 发帖数: 1080 | 43 我用atlas,程序里简单调用zgeev函数。编译没有错,没有警告。运行也不出错,但结
果完全不对。似乎函数根本没有被调用。
另外哪里能找到在C或者C++下调用Blas/Lapack函数的具体格式?我这里函数参数还是
在网上搜的。完全没有相关的手册。难道Blas/Lapack只是给fortran用的?
程序如下
#include
#include
#include
#include
#include
using namespace std;
typedef complex dcomplex;
extern "C" void zgeev_( char* jobvl, char* jobvr, int* n, dcomplex* a,
int* lda, dcomplex* w, dcomplex* vl, int* ldvl, dcomplex*
vr, int* ldvr, dcomplex* work, int* lwork, double* r... 阅读全帖 |
|
D***n 发帖数: 6804 | 44 有很多区别:
16位下的就不谈了。
Windows 下使用LLP64模型,int/long 都是32位的。
Unix下大部分使用LP64模型,int=32位,long=64位。
如果你使用long作为函数参数,那么函数的demagling 是一个问题,C++ ABI里面long
是一个独立的符号名。很多typedef的基础是int或者long,比如SInt32 32位定义为
long,64位定义为int,这样你的函数可能在不同环境下会有冲突。 |
|
s******y 发帖数: 28562 | 45 经典意义上的狭义函数的确只有一个值。
广义函数也可以有多个值,而且是在各种条件都确定了的前提下(而不是由于
未知参数的干扰)也可以有多个值。 |
|
T***t 发帖数: 181 | 46 VS 用户界面新手,向各位请教。
C#, 编程时, 经常需更改或补写一些 static 的工具函数。 在 test 这些工具函数
时, 即便只在 Immediate window 里调用这些函数,VS 总是啃吃啃吃地把整个
project,包括另外一些模块的,都重新 compile 一遍,看着都费劲。 是我哪里的设
置错了? |
|
T***t 发帖数: 181 | 47 VS 用户界面新手,向各位请教。
C#, 编程时, 经常需更改或补写一些 static 的工具函数。 在 test 这些工具函数
时, 即便只在 Immediate window 里调用这些函数,VS 总是啃吃啃吃地把整个
project,包括另外一些模块的,都重新 compile 一遍,看着都费劲。 是我哪里的设
置错了? |
|
b***i 发帖数: 3043 | 48 我的理解
java是pass by value。所以,传入一个整数作为参数到函数里面是不能改变函数外面
那个 变量的值 的。
而那些复杂的类,传入的是类的地址的值。在这里,类的值就是变量地址的值。因为
java里面不讲地址,但本质上就是堆栈里面的地址。当你传入类变量的地址,当然可以
根据地址改变地址指向的那个数据,但是不能改变该变量本身的地址。这和C语言里面
传入一个指针,可以改变指针指向的数据,但是不能改变指针本身是一样的。 |
|
b***i 发帖数: 3043 | 49 有一组数,定义好了
class Parameters {
int AAA = 1;
int BBB = 2;
int CCC = 3;
}
假设函数为
doit(Parameters par){
GlobalVariable[AAA]=55;
GlobalVariable[BBB]=66;
}
所以我只要doit(new Parameters)即可。现在,我要把新的一组数值传入doit
class ParametersToo {
int AAA = 3;
int BBB = 2;
int CCC = 1;
}
怎么办呢?我写的Java是
class ParametersToo extends Parameters {
int AAA = 3;
int BBB = 2;
int CCC = 1;
}
结果调试的时候,发现即使是把ParametersToo传入doit,里面看到的数值还是原来那
组。我其实想用的是类似虚函数的变量。这个有没有呢? |
|
e*l 发帖数: 37 | 50 对于拷贝构造函数no-trivial的对象,函数参数不要按值传递,可以按引用或指
针传递;函数返回值也不要直接返回对象,可以将返回值通过函参传递;尽量避
免临时变量的生成,避免不必要的构造析构开销。你的代码中基本充斥着这些问题,
效率很低是很正常的
variable |
|